C#Unity:慢动作功能无法正常工作

时间:2019-11-30 09:14:04

标签: c# unity3d slowmotion

我做了一个慢动作功能,当玩家死亡时(当他撞到物体时)启用了该功能。这确实很好,但是我的正常速度很高。就像我的游戏处于“高速”状态,而玩家死亡时,它处于“慢动作”状态。如果有人可以帮助我,我将非常高兴。

这是我的慢动作脚本(第一个脚本),另一个仅是我的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);
    }
}

1 个答案:

答案 0 :(得分:0)

将您的 isSlowMo bool设为静态,以便可以通过您的“ EndGame ”方法进行更新。

public static bool isSlowMo = false;

您正在从方法更新bool,但是您的“ SlowMotion ”脚本始终从类中获取isSlowMo bool的值,这就是为什么它一直在播放else条件的原因。