示例#1
0
        private void AttackOrder(Order order)
        {
            // Check for goal reached
            if (order.targetUnit.status == Status.Dead)
            {
                NextOrder();
                Update();
                return;
            }

            var targetPosition = order.targetUnit.position;

            if (position.Distance(targetPosition) > type.attackRange)
            {
                // Move into range
                MoveTowards(targetPosition);
                return;
            }

            status = Status.Attacking;
            engine.Attack(this, order.targetUnit);
            direction = CalculateDirection(targetPosition - position);
            engine.ScheduleUpdate(GetAttackCooldown(), this);
        }