/// <summary> /// Knocks the colliding GameObject away. Knockback is handled differently /// for entities than for typical Rigidbodies to avoid bugs. /// </summary> /// <param name="collision"> /// Collision holding information about colliding object. /// </param> protected virtual void Knockback(Collision collision) { if (KnockbackableMagnitude <= 0 || KnockbackMagnitude <= 0) { return; } Vector3 knockbackDir = GetKnockbackDirection(collision); IKnockbackable knockbackable = collision.gameObject.GetComponent <IKnockbackable>(); if (knockbackable != null) { knockbackable.Knockback(knockbackDir, KnockbackableMagnitude); } else { ApplyForceToRigidbody(collision, knockbackDir); } }
private void OnDamaged() { _knockback.Knockback(); }