public bool SetIsKinematic(bool isKinematic)
{
if (_rigidbody == null)
return false;
if (isKinematic)
{
_velocity = _rigidbody.velocity;
Debug.Log("Cached velocity as " + _velocity + " on " + GetHashCode());
_angularVelocity = _rigidbody.angularVelocity;
_rigidbody.isKinematic = true;
}
else
{
Debug.Log("Read velocity as " + _velocity + " on " + GetHashCode());
_rigidbody.isKinematic = false;
_rigidbody.AddForce(_velocity, ForceMode.Impulse);
_rigidbody.AddTorque(_angularVelocity, ForceMode.Impulse);
}
return true;
}
public bool SetIsKinematic(bool isKinematic)
{
if (_rigidbody == null)
return false;
if (isKinematic)
{
_velocity = _rigidbody.velocity;
Debug.Log("Cached velocity as " + _velocity + " on " + GetHashCode());
_angularVelocity = _rigidbody.angularVelocity;
_rigidbody.isKinematic = true;
}
else
{
Debug.Log("Read velocity as " + _velocity + " on " + GetHashCode());
_rigidbody.isKinematic = false;
_rigidbody.AddForce(_velocity, ForceMode.Impulse);
_rigidbody.AddTorque(_angularVelocity, ForceMode.Impulse);
}
return true;
}