Ejemplo n.º 1
0
        public bool TryReactToCollision(int dmg, Vector collidingVel, int collidingMass, Team collidingTeam, bool forceReaction = false)
        {
            health -= dmg;

            float velTransferMod = ((float)collidingMass / (float)Mass);

            Vel = Vel.AddVector(collidingVel.Multiply(velTransferMod));
            Vel = Vel.LimitToMagnitude(MaxVel);

            if (health <= 0)
            {
                Kill(collidingTeam);
            }

            return(true);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Object's reaction to being collided with
        /// </summary>
        /// <param name="dmg">incoming damage</param>
        /// <param name="collidingVel">velocity of other object</param>
        /// <param name="collidingMass">mass of other object</param>
        /// <param name="collider">
        /// team of other object</param>
        /// <param name="forceReaction">opt to bypass hurting timeout</param>
        public virtual bool TryReactToCollision(int dmg, Vector collidingVel, int collidingMass, Team collidingTeam, bool forceReaction = false)
        {
            if (!isHurting || forceReaction)
            {
                isHurting = true;
                hurtTimer.Start();

                health -= dmg;
                float velTransferMod = ((float)collidingMass / (float)Mass);
                Vel = Vel.AddVector(collidingVel.Multiply(velTransferMod));
                Vel = Vel.LimitToMagnitude(MaxVel);

                if (health <= 0)
                {
                    Kill(collidingTeam);
                }

                return(true);
            }
            return(false);
        }