コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
 private void OnDamaged()
 {
     _knockback.Knockback();
 }