抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

说明:红宝石和蓝宝石是一次性的,所以拾取后要摧毁音效对象,而黄宝石是需要重复利用的,不需要摧毁。

为了整体音效更好管理,新建一个SoundEffectsPlayer类,附加在SFX Player对象上,SFX Player对象上要有AudioSource组件

image-20220919133724914

public class SoundEffectsPlayer : MonoBehaviour
{
public static AudioSource audioSource { get; private set; }
private void Awake()
{
audioSource = GetComponent<AudioSource>();
audioSource.playOnAwake = false;
}
}

StarGem,黄色跳跃星星脚本中,注释掉AudioSource定义代码,播放音效改为调用SoundEffectsPlayer类中的AudioSource:SoundEffectsPlayer.audioSource.PlayOneShot(pickUpSFX);//播放音效


一次性宝石

分别在红、蓝宝石组件上新建两个同名脚本:VitoryGem、GateTrigger

统一代码为:拾取时播放音效、特效。

public class GateTrigger : MonoBehaviour
{
[SerializeField] AudioClip pickUpSound;//音效
[SerializeField] ParticleSystem pickUpVFX;//特效
private void OnTriggerEnter(Collider other)
{
SoundEffectsPlayer.audioSource.PlayOneShot(pickUpSound);
Instantiate(pickUpVFX, transform.position, Quaternion.identity);
Destroy(gameObject);//摧毁
}
}

红、蓝宝石不需要判断是否和玩家产生碰撞。通过碰撞物理层级来实现,限定两个宝石只和玩家产生碰撞

新建PlayerInteractable层级

image-20220919153452969

项目设置中,设置Interactable物理层级只和player碰撞。

image-20220919155937199

image-20220919155922111


玩家音效

PlayerController中添加音源组件

image-20220920124419579

跳跃、二段跳、落地等状态中添加音效(截图为跳跃状态,其他代码一样)

image-20220920124648621

然后在编辑器中拖入各自的音频文件

image-20220920124755696

添加背景音乐(Loop:循环播放,Play On Awake:开局自动播放)

image-20220920124901051


调整音量

在每个有创建AudioSource,的脚本中添加音量调整滑块

SoundEffectsPlayer:

image-20220920124123545

PlayerController:

image-20220920124310496

image-20220920124321772

效果:

image-20220920125147979

image-20220920125237699

评论