在刚体中移动的立方体
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() 方法
统一 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() 方法