1 c# move rigid-bodies unity-game-engine
我正在尝试移动一个游戏对象,但我发现这两个最流行的函数可以移动对象。我知道这两者之间的区别在于使用 AddForce 时需要一个刚体,而 Transform.translate 中不需要刚体。我只是想确保我在游戏中使用了正确的功能。这两个功能的功能有什么不同吗?我正在一个有障碍物的无限平面上移动一个立方体。我认为当然需要刚体,但我想知道 Transform.translate 有什么用?
转换.translate:
使用这种方法,您基本上可以远程传输游戏对象,而不考虑物理和碰撞器。如果您连接了 RigidBody,这个非常昂贵。
加力:
有了这个,您将向 GameObject 的 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);
}
Run Code Online (Sandbox Code Playgroud)
调整运动速度以更快或更慢。
没有测试代码,但它应该可以工作。
| 归档时间: |
|
| 查看次数: |
3359 次 |
| 最近记录: |