首页 > 编程知识 正文

求生之路怎么改lerp,aeroplane和plane的区别

时间:2023-05-03 16:00:45 阅读:38640 作者:2054

Lerp使用误区

我注意到,无论是Mathf.Lerp还是Vector的Lerp函数,都有不少将线性移动用于弹性移动的严重错误。 (总之自己还不知道,还很奇怪,咦,不是说了很好的线性移动吗? 怎么有点弹性的着急? 和,最常见的错误写法如下:

transform.position=vector3. lerp (transform.position,target.position,0.1f );

错误的关键在于无法理解lerp (向量3 a、向量3 b、浮动t的第三个参数t。 该t取值范围[ 0,1 ],0时返回a,1时返回b,0.5时返回a和b的中点位置。 也就是说,如果该值的变化像上述决定返回的代码那样错误地使用t,例如时间和速度,则每次移动时,其馀位置的1/10。 例如,如果第一个距离为1米,则变化的位置依次为0.1、0.10.09、0.190.081、……。

transform.position=vector3. lerp (a,b,0.1f );

这是另一个常见的错误,这种写法永远停留在a和b之间的1/10的位置。

我们应该通过控制t的变化来控制位置的变化。 例如,如果想从a到b总共花2s的时间,正确的使用方法应该写如下。

浮动步骤=1f/2f * time.delta time;

t=步骤;

transform.position=vector3. lerp (a,b,t );

2. SmoothDamp使用问题

SmoothDamp的使用问题主要是需要引用传递的参数ref Vector3currentVelocity。 此参数必须是全局变量,而不是局部变量。 否则,你会发现物体以乌龟一样的速度移动。 每次调用此变量时,它都将在SmoothDamp内部使用和修改,因此必须记录在上一个值中

Vector3 velocity=Vector3.zero;

void更新() )

{

transform.position=vector3. smooth damp (transform.position,target,ref velocity,smoothTime );

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。