当玩家低于 Y 0.5 位置时播放声音
本文关键字:位置 播放声音 玩家 | 更新日期: 2023-09-27 18:30:18
我的代码:
void Update()
{
//Restart level
if (gameObject.transform.position.y < -0.5)
{
PlayerPrefs.SetInt("CubePointsLvl", 0);
StartCoroutine( Wait3Seconds() );
//rigidbody.AddForce(0,-100000,0);
//transform.position = new Vector3(inputSpawnX, inputSpawnY, inputSpawnZ);
}
}
//Wait 3 second
IEnumerator Wait3Seconds()
{
audio.PlayOneShot(DeadSound, 1.0F);
yield return new WaitForSeconds (0.3f);
Application.LoadLevel(Application.loadedLevel);
}
我想在玩家处于 Y 0.5 位置以下时播放声音,然后游戏重新启动。但是当我调试代码时,声音是循环的,我知道为什么,但我不知道如何解决它。我该怎么做?还有解释?我正在使用 C#。
您在播放器低于-0.5
的每一帧都启动一个新的协程,而不是在播放器第一次低于-0.5
时只执行一次。 可以使用标志来防止再次启动协程。
private bool alreadyDead = false;
public void Update() {
// Only execute if we've gone below -0.5 for the first time
if (gameObject.transform.position.y < -0.5 &&
alreadyDead == false)
{
// Set a flag indicating this has been executed
alreadyDead = true;
PlayerPrefs.SetInt("CubePointsLvl", 0);
StartCoroutine( Wait3Seconds() );
}
}
public IEnumerator Wait3Seconds()
{
audio.PlayOneShot(DeadSound, 1.0F);
yield return new WaitForSeconds (0.3f);
Application.LoadLevel(Application.loadedLevel);
}