Unity Collider - Box Collider 和 Mesh Renderer 碰撞后移位

Unity Collider - Box Collider and Mesh Renderer shift after collision

我试图在一个游戏对象 B 发生碰撞后将其附加到另一个游戏对象 A。

Box Colliders 和 Rigidbodies 都附加到两个对象。以下代码启用对象合并:

private void OnCollisionEnter(Collision collision)
{
   collision.gameObject.transform.SetParent(transform,true);
}

否则没有其他脚本影响对象

对象 B 将按预期作为对象 A 的父级。但是在碰撞之后,Mesh Renderer 和 Box Collider 就不再位于彼此之上。为了更好地了解情况,我提供了图片 before the collision, while the collision 和 after the collision.

我还注意到较低的碰撞力也会导致较低的位移。你知道 Mesh Renderer 和 Box Collider 是如何在碰撞后仍然位于彼此之上的吗?

谢谢!

当对象 B 成为对象 A 的父对象时,其局部变换会乘以 A 的 translation/rotation/scale。解决方案创建一个对象 C,它是对象 A 的父对象,具有旋转 0,0,0 和比例 1,1,1,当对象 A 与对象 B 碰撞时,使 C 成为 B 的父对象。

ABC 总是碰撞