Translate方法和MovePosition方法的区别

u3d里物体移动的方法有很多种,初学者最容易弄混淆的是transform.Translate和rigidbody.MovePosition。
都是移动,这两者到底有什么区别呢?
其实transform.Translate相当于直接改变物体的位置,可以参照自身坐标系或者世界坐标系,如果物体本身不是刚体,这个方法完全可以搞定,但如果物体是刚体,这个方法在刚体发生了碰撞后会发生不规则运动(实测)。
而MovePosition方法考虑到了物理引擎的东西。
但是MovePosition使用的时候也有坑,比如直接在Update里写rigidbody.MovePosition(vector3.forward)你会发现根本运动不了。
这个方法需要在参数里加上自身的位置。比如写成rigidbody.MovePosition(transform.position + Vector3.forward),你会发现可以正常使用了,而且刚体间的碰撞不会影响接下来的移动,美滋滋!

你可能感兴趣的:(游戏开发,unity)