慢下来Unity3d Mecanim

时间:2014-03-22 18:30:40

标签: c# time unity3d

我正在尝试减速并最终停止它,我有一个减慢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类吗?

所以时间对世界来说是放慢速度,但对于玩家来说却不是这样,想想时钟停止!

2 个答案:

答案 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表示正常速度。