Beispiel #1
0
 private void Dodge()
 {
     if (Input.GetKey("space") && (Input.GetKey("d") || Input.GetKey("a")))
     {
         DodgeAbility foundAbility = abilities.Find(item => item.GetType() == typeof(DodgeAbility)) as DodgeAbility;
         if (foundAbility != null)
         {
             if (Input.GetKey("d"))
             {
                 foundAbility.Dodge(this.transform, DodgeDirection.Right);
             }
             else if (Input.GetKey("a"))
             {
                 foundAbility.Dodge(this.transform, DodgeDirection.Left);
             }
         }
     }
 }
Beispiel #2
0
        private float GetRequiredTime(Unit9 ally, Vector3 movePosition, float remainingTime, out DodgeAbility speedBuffAbility)
        {
            var turnTime = ally.GetTurnTime(movePosition);
            var distance = ally.Distance(movePosition);
            var speed    = ally.Speed;

            var requiredTime = turnTime + (distance / speed);

            if (remainingTime > requiredTime)
            {
                speedBuffAbility = null;
                return(requiredTime);
            }

            speedBuffAbility = this.dodgeAbilities.Where(x => x.CanBeCasted(ally, null, null))
                               .OrderByDescending(x => x.SpeedBuffAbility.GetSpeedBuff(ally))
                               .FirstOrDefault();

            if (speedBuffAbility == null)
            {
                return(requiredTime);
            }

            return(turnTime + (distance / (speed + speedBuffAbility.SpeedBuffAbility.GetSpeedBuff(ally))));
        }