我正在尝试移动游戏对象,但是我发现了这两个最受欢迎的功能来移动对象。我知道这两者之间的区别在于,使用AddForce需要一个刚体,而在Transform.translate中则不需要刚体。我只是想确保我在游戏中使用了正确的功能。这两个功能在功能上有区别吗?我正在将立方体移动到有障碍物的无限平面上。我认为当然需要刚体,但我想知道Transform.translate的用途是什么?
答案 0 :(得分:3)
transform.translate:
使用这种方法,您基本上可以远程传输GameObject,而无需考虑 物理也不是对撞机。如果您附有RigidBody,那么这是相当昂贵的。
AddForce:
通过此操作,您将为GameObject的RigidBody添加力量,因此所有 运动将考虑物理和对撞机。
如果您需要移动RigidBody(例如播放器),建议使用MovePosition。 比AddForce更精确,并使用物理马达。
编辑:
示例:
public float movementSpeed= 5f; //for instance
void FixedUpdate()
{
Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0 , Input.GetAxisRaw("Vertical"));
rigidbody.MovePosition(transform.position + direction * movementSpeed * Time.fixedDeltaTime);
}
调整运动速度可以更快或更慢。
没有测试代码,但是应该可以。
答案 1 :(得分:1)
有时候您不想在游戏中使用物理,因为它使用了很多计算能力,还有很多其他用例,开发人员不需要使用物理来移动对象或与之碰撞其他对象并不重要。