如何使用角色控制器操作Time.timeScale
本文关键字:Time timeScale 操作 控制器 何使用 角色 | 更新日期: 2024-11-01 03:09:20
我正在尝试做类似原型游戏SuperHot的东西,其中"只有当你移动时,时间才会移动"。
我能想到的方法包括使用输入或字符控制器的速度来操作Time.timeScale。
以下是我是如何做到的:
using UnityEngine;
using System.Collections;
public class TimeMechanic : MonoBehaviour {
private float targetScale;
// Use this for initialization
void Start ()
{
targetScale = 0.02f;
}
// Update is called once per frame
void Update ()
{
Time.timeScale = targetScale; //setting the timeScale
if (Input.GetAxis ("Horizontal") != 0 || Input.GetAxis ("Vertical") != 0)
{
targetScale += 0.03f; //incrementing the variable by 0.03
if (targetScale > 1f)
{
targetScale = 1f; //limits the variable to 1 at max
}
}
else
{
targetScale -= 0.03f; //decrementing the variable by 0.03
if (targetScale < 0.02f)
{
targetScale = 0.02f; //limits variable to 0.02 at min
}
}
Debug.Log (targetScale);
}
}
我的问题:
- 使用角色控制器的速度操纵时间刻度是否可行?
- 在此代码中我应该改进哪些内容?
这将取决于您的算法。事实上,当你减少timeScale
时,它将具有循环依赖性。取决于Input
会更好,但这取决于您期望的外观和感觉。
当时间刻度设置为零时,游戏基本上暂停,如果所有 函数与帧速率无关。
除了 realtimeSinceStartup 之外,timeScale 一直影响着 时间类的增量时间测量变量。
如果您降低时间刻度,建议也降低 Time.fixedDeltaTime由相同的量。
当时间刻度设置为 零。
由于Physics
最优选FixedUpdate
因此有必要注意上述几点,除非您的游戏会有很多违规行为。