我得到了一个亚军游戏,当它与障碍物碰撞时,我的玩家死亡了。碰撞后我做了一个慢动作,使游戏更酷。在屏幕上方的游戏中,我得到了重新启动按钮,按下按钮后,游戏再次开始,但是时间仍然很慢。我无法解决问题,请帮助我。有我的慢动作代码
public float slowdownFactor = 0.05f;
public float slowdownLength = 4f;
private void Update()
{
Time.timeScale += (1f / slowdownLength) * Time.unscaledDeltaTime;
Time.timeScale = Mathf.Clamp(Time.timeScale, 0f, 1f);
}
public void DoSlowMotion()
{
Time.timeScale = slowdownFactor;
Time.fixedDeltaTime = Time.timeScale * .02f;
}
这是我的重启代码
public void RestartGame()
{
SceneManager.LoadScene("Level01");
}
我没有收到任何错误消息。
答案 0 :(得分:1)
首先,您也永远不会更新Time.fixedDelatTime
。我会使用一种专用的方法来避免重复的代码,例如
public float slowdownFactor = 0.05f;
public float slowdownLength = 4f;
private void Update()
{
SetTimeScale(Time.timeScale + (1f / slowdownLength) * Time.unscaledDeltaTime);
}
private void SetTimeScale(float scale)
{
Time.timeScale = Mathf.Clamp(scale, 0f, 1f);;
Time.fixedDeltaTime = Time.timeScale * .02f;
}
public void DoSlowMotion()
{
SetTimeScale(slowdownFactor);
}
然后假设您可以简单地将默认timeScale
设置为1
private void Start()
{
SetTimeScale(1f);
}
或者如果您的Start
不被再次调用(例如,使用DontDestroyOnLoad
的情况)也要在加载场景之前进行
public void RestartGame()
{
SetTimeScale(1f);
SceneManager.LoadScene("Level01");
}