当满足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()
}
}
答案 0 :(得分:0)
Vector3.SmoothDamp是一种方法,可以在一段时间内完成,而不是在一帧中完成。 像这样的方法必须用于不止一次调用的东西。每帧调用一次Update(),就像一堆其他方法一样。
您可以在Update()中调用MethodOne()。
如果您不想使用Update(),可以使用while循环和yield编写Coroutine。然后在其中调用所需的方法(SmoothDamp)。 我建议您阅读Coroutines,StartCoroutine和StopCoroutine。最后,如果你这样做,记得在你的循环中屈服!没有收益,你的游戏就会挂起。