I have created this helper class, is this the best way of disabling and enabling a rigidbody at runtime?
public class RigidbodyCopy
{
float angularDrag;
float mass;
float drag;
RigidbodyInterpolation interpolate;
CollisionDetectionMode collisionDetectionMode;
bool isKinematic;
bool useGravity;
public RigidbodyCopy(InteractableItem item) {
var org = item.GetComponent<Rigidbody>();
mass = org.mass;
drag = org.drag;
interpolate = org.interpolation;
collisionDetectionMode = org.collisionDetectionMode;
angularDrag = org.angularDrag;
isKinematic = org.isKinematic;
useGravity = org.useGravity;
}
public Rigidbody CopyTo(InteractableItem item) {
var rigidbody = item.gameObject.AddComponent<Rigidbody> ();
rigidbody.mass = mass;
rigidbody.drag = drag;
rigidbody.interpolation = interpolate;
rigidbody.collisionDetectionMode = collisionDetectionMode;
rigidbody.angularDrag = angularDrag;
rigidbody.isKinematic = isKinematic;
rigidbody.useGravity = useGravity;
return rigidbody;
}
}
Usde like
var copy = new RigidbodyCopy(item);
Destroy(item.GetComponent<Rigidbody>());
//Attach to other rigid body or whatever
parent.AttachChild(item);
//when decouple
copy.CopyTo(item),