Skip to content

Instantly share code, notes, and snippets.

@EliCDavis
Last active July 7, 2018 19:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save EliCDavis/e3b049383a3eb40b6e4a6e2e32df54b3 to your computer and use it in GitHub Desktop.
Save EliCDavis/e3b049383a3eb40b6e4a6e2e32df54b3 to your computer and use it in GitHub Desktop.
float desiredMagnitudeToEndForceAnimation = .1f;
IEnumerator AnimateForce(float force, Vector3 forcePosition, float radius)
{
var rb = GetComponent<Rigidbody>();
rb.constraints = RigidbodyConstraints.None;
rb.AddExplosionForce(force, forcePosition, radius);
do
{
yield return new WaitForSeconds(.1f);
}
while (rb.velocity.magnitude > desiredMagnitudeToEndForceAnimation && rb.angularVelocity.magnitude > desiredMagnitudeToEndForceAnimation);
// It could have been destroyed at any point in time in our waiting
if(rb != null)
{
rb.constraints = RigidbodyConstraints.FreezeAll;
}
}
public void AddExplosionForce(float force, Vector3 forcePosition, float radius)
{
StartCoroutine(AnimateForce(force, forcePosition, radius));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment