我做了一个慢动作功能,当玩家死亡时(当他撞到物体时)启用了该功能。这确实很好,但是我的正常速度很高。就像我的游戏处于“高速”状态,而玩家死亡时,它处于“慢动作”状态。如果有人可以帮助我,我将非常高兴。
这是我的慢动作脚本(第一个脚本),另一个仅是我的LevelManager
的一部分,其中我将此bool
设置为true:
public class SlowMotion : MonoBehaviour
{
[SerializeField]
private float slowMo = 0.2f;
[SerializeField]
private float normalTime = 1f;
public bool isSlowMo = false;
void Update()
{
if (isSlowMo)
{
Time.timeScale = slowMo;
Time.fixedDeltaTime = 0.02f * Time.timeScale;
} else
{
Time.timeScale = normalTime;
Time.fixedDeltaTime = 0.02f * Time.timeScale;
}
}
}
另一个脚本(脚本的重要部分):
public void EndGame() {
if (GameHasEnded == false) {
slowMotionScript.isSlowMo = true;
GameHasEnded = true;
endLevelUI.SetActive(true);
Invoke("DisableMovement", MovementDelay);
pauseMenu.enabled = false;
Camera.main.GetComponent<AudioSource>().Pause();
music.Play();
scoreText.SetActive(false);
levelText.SetActive(false);
}
}
答案 0 :(得分:0)
将您的 isSlowMo bool设为静态,以便可以通过您的“ EndGame ”方法进行更新。
public static bool isSlowMo = false;
您正在从方法更新bool,但是您的“ SlowMotion ”脚本始终从类中获取isSlowMo bool的值,这就是为什么它一直在播放else条件的原因。