我正在尝试减速并最终停止它,我有一个减慢timeScale的脚本然而我的播放器使用mecanim也会减慢速度。
我创建了一个TimeController.cs 这将允许我通过使用替代deltaTime来跟踪时间,因为玩家可以使用变量,
public class TimeController : MonoBehaviour {
private float oldTimeSinceStart;
public float deltaTime;
void LateUpdate () {
float timeSinceStart = Time.realtimeSinceStartup;
deltaTime = timeSinceStart - oldTimeSinceStart;
oldTimeSinceStart = timeSinceStart;
if (Input.GetButton("BulletTime"))
{
if (Time.timeScale > 0.01)
{
Time.timeScale -= 0.004f;
}
}
else
{
if (Time.timeScale < 1)
{
Time.timeScale += 0.01f;
}
}
}
}
从这一点开始,我想到使用Animator Update来设置播放器速度和动画速度的mecanim逻辑驱动速度,但是我似乎无法做到, 使用Animator.Update时(MyTimeController.deltaTime); 它似乎以可变速度运行,就像Animator在某处有第二个输入一样。
周围有吗?你可以将timeScale与播放器/ mecanim隔离开来,让它看一下输入变量的另一个Time类吗?
所以时间对世界来说是放慢速度,但对于玩家来说却不是这样,想想时钟停止!
答案 0 :(得分:0)
根据Unity文档,动画对象中有这个动画速度属性:
https://docs.unity3d.com/Documentation/ScriptReference/Animator-speed.html
尝试使用
在您设置时间刻度后立即<yourgameobjecthere>.getComponent<Animator>().speed = Time.timescale;
。
我不确定在动画过程中动画速度是否正确应用。
答案 1 :(得分:0)
正如Felype所提到的,你可以使用Animator组件,我通常会获得Animator组件,然后使用<animator_object>[<animation_clip_object.name>]
。speed。对于速度,值1表示正常速度。