Unity3D中的rigidbody.velocity与lerp效率

时间:2014-04-01 21:39:01

标签: performance unity3d

我有两种移动游戏对象的方法:

方法1

void Update(){
    rigidbody.velocity = ( targetPosition - transform.position )*speed;
}

方法2

void Update(){
    transform.position = Vector3.lerp( transform.position, targetPosition, Time.delta*speed);
}

哪一个效率更高? rigidbody.velocity是否使用GPU?

修改

我为移动平台开发,所以我想知道这两种方法之间的性能差异是否很大。

1 个答案:

答案 0 :(得分:3)

问题的答案

  

哪一个更有效率?

transform.position

这是因为使用transform.position可以直接修改GameObject Transform组件的位置,该组件控制所述对象的位置,方向和缩放。

使用rigidbody.velocity使用物理系统修改此变换,该系统可能比直接设置值更慢。

但我必须强调,这是过早优化的极端情况,两者在性能方面的差异可以忽略不计。您应该关注的唯一区别是如何使用这些不同的方法移动对象适合您的游戏设计。

通常,transform.position只应用于两种情况:(1)瞬时运输(产卵,传送等)或(2)不使用物理系统的物体(即不要使用物理系统)基于重力,摩擦或其他因素移动。)

另一方面,使用rigidbody.velocity来提供基于物理系统的更逼真的运动行为。

使用哪一个应该基于游戏的设计和当前的对象,而不是由哪个更高效?"