在刚体中移动的立方体

Cube moving through rigidbody

统一 5.1.1f1 我有一个通过脚本移动的立方体。每当刚体与其接触时,它都会将刚体移出其路径。

但是在某些情况下,刚体在立方体的路径上,立方体穿过刚体。

例如图中红色的是可移动的立方体,灰色的是RigidBody -

如你所见,红色立方体可以移动到灰色刚体中。

来源是here

我也问了这个问题here

立方体随着脚本移动-

 transform.position = Vector3.MoveTowards (transform.position, 
 patrolPoints [currentPoint].position, moveSpeed * Time.deltaTime);

确保碰撞检测设置为连续。

正确答案

抱歉,我没有意识到您要移动的是没有刚体的对象。如果是这种情况,并且您必须使用 Vector3.MoveTowards()transform.Translate(),则在 FixedUpdate() 函数而不是 Update() 中执行此操作,并使用 Time.fixedDeltaTime 而不是 Time.deltaTime 这将使您的运动以增量同步到 Unity 的物理帧,这些帧与渲染帧的间隔不同。这不是错误。

原答案

您不想将 Vector3.MoveTowards()transform.Translate() 用于要与其他物体交互的刚体。他们将完全按照您告诉他们的方式移动,无需任何互动。您需要改用 rigidbody.AddForce()

将刚体添加到红色立方体解决了问题。

我应该把这个问题陈述放在统一错误中吗?

出现此问题是因为您的刚体(蓝色立方体)进入睡眠状态。这可以通过添加 GetComponent ().sleepThreshold = -1; 来解决。到您 PlayerMovement.cs.

的 Start() 方法