SmoothDamp仅适用于Update()

时间:2016-04-07 19:14:04

标签: c# unity3d

当满足MethodeOne中的yes条件时,我想SmoothDamp。但SmoothDamp仅适用于void Update()我该怎么办?有人可以提供替代方案吗?

public Transform target;
public float smoothTime = 0.3F;
private Vector3 velocity = Vector3.zero;

private void MethodOne()
{
    if(yes)
    {
        Vector3 targetPosition = target.TransformPoint(new Vector3(0, 5, -10));
        transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref velocity, smoothTime); 
        //SmoothDamp works only in Update()
    }
}

1 个答案:

答案 0 :(得分:0)

Vector3.SmoothDamp是一种方法,可以在一段时间内完成,而不是在一帧中完成。 像这样的方法必须用于不止一次调用的东西。每帧调用一次Update(),就像一堆其他方法一样。

您可以在Update()中调用MethodOne()。

如果您不想使用Update(),可以使用while循环和yield编写Coroutine。然后在其中调用所需的方法(SmoothDamp)。 我建议您阅读CoroutinesStartCoroutineStopCoroutine。最后,如果你这样做,记得在你的循环中屈服!没有收益,你的游戏就会挂起。