static public void CopyRigidbody2D(Rigidbody2D originalRigidBody, Slicer2D slicer, Polygon2D id, double originArea) { if (originalRigidBody) { Rigidbody2D newRigidBody = slicer.GetRigibody(); newRigidBody.isKinematic = originalRigidBody.isKinematic; newRigidBody.velocity = originalRigidBody.velocity; newRigidBody.drag = originalRigidBody.drag; newRigidBody.angularVelocity = originalRigidBody.angularVelocity; newRigidBody.angularDrag = originalRigidBody.angularDrag; newRigidBody.constraints = originalRigidBody.constraints; newRigidBody.gravityScale = originalRigidBody.gravityScale; newRigidBody.collisionDetectionMode = originalRigidBody.collisionDetectionMode; newRigidBody.sharedMaterial = originalRigidBody.sharedMaterial; //newRigidBody.sleepMode = originalRigidBody.sleepMode; //newRigidBody.inertia = originalRigidBody.inertia; // Center of Mass : Auto / Center if (slicer.centerOfMass == Slicer2D.CenterOfMass.RigidbodyOnly) { newRigidBody.centerOfMass = Vector2.zero; } if (slicer.recalculateMass) { float newArea = (float)id.ToLocalSpace(slicer.transform).GetArea(); newRigidBody.mass = originalRigidBody.mass * (float)(newArea / originArea); } else { newRigidBody.mass = originalRigidBody.mass; } } }