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); }
/// <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); }