void ApplyImpulse() { if (_resetCoroutine != null) { _resetCoroutine.Abort(); _resetCoroutine = null; } // Apply linear impulse force if (_applyLinearImpulse) { _rb.AddLinearImpulse(LinearImpulseDirection * LinearForce); } // Apply angular impulse force if (_applyAngularImpulse) { // Generate a new random angular impulse Vector angularImpulse = new Vector((float)_rng.NextDouble() * AngularVariance.X, (float)_rng.NextDouble() * AngularVariance.Y, (float)_rng.NextDouble() * AngularVariance.Z); // Apply the angular impulse if it is non-zero if (angularImpulse.LengthSquared() > 0.0f) { _rb.AddAngularImpulse(angularImpulse.Normalized() * AngularForce); } } if ((ResetTimeout > 0.0) && (_applyLinearImpulse || _applyAngularImpulse)) { _resetCoroutine = StartCoroutine(ResetAfterTimeout); } }
void ApplyImpulse() { // Apply linear impulse force if (_applyLinearImpulse) { _rb.AddLinearImpulse(LinearImpulseDirection * LinearForce); } // Apply angular impulse force if (_applyAngularImpulse) { // Generate a new random angular impulse Vector angularImpulse = new Vector((float)_rng.NextDouble() * AngularVariance.X, (float)_rng.NextDouble() * AngularVariance.Y, (float)_rng.NextDouble() * AngularVariance.Z); // Apply the angular impulse if it is non-zero if (angularImpulse.LengthSquared() > 0.0f) { _rb.AddAngularImpulse(angularImpulse.Normalized() * AngularForce); } } }