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