我试图使用控制器在一个3d世界中移动一个对象,但我想我错过了一些东西,只要我给出任何输入就会剪掉它:
private void Update()
{
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
Vector3 movement = new Vector3(h, 0, v).normalized * Time.deltaTime * speed;
if(h != 0 || v != 0)
_rigidBody.MovePosition(movement);
}
使用_rigidbody.velocity
可以正常工作,但据我所知,对于这些类型的东西应该避免。
Rigidbody.MovePosition用插值设置刚体的位置。看起来你想通过movement
来抵消这个位置,所以你应该设置速度。如果你仍然想使用MovePosition
,你应该做_rigidBody.MovePosition(transform.position + movement);
。
“使用控制器”
你的意思是Character Controller组件?您有两个选项,它们在Unity文档中都有很好的解释。其次是Rigidbody组件。