Example #1
0
        public override void Act(StateController controller)
        {
            WorldObject controlledObject = controller.controlledObject;
            Vector3     currentPosition  = controlledObject.transform.position;
            WorldObject chaseTarget      = controller.chaseTarget;

            WorldObject mostVulnerableEnemy = WorkManager.FindMostVulnerableObjectInList(controller.nearbyEnemies);

            if (mostVulnerableEnemy)
            {
                controller.chaseTarget = mostVulnerableEnemy;

                if (!(controlledObject is Unit))
                {
                    return;
                }
                Unit unit = (Unit)controlledObject;

                if (!WorkManager.ObjectCanReachTarget(unit, mostVulnerableEnemy))
                {
                    unit.StartMove(WorkManager.GetTargetClosestPoint(unit, mostVulnerableEnemy));
                }
                else
                {
                    unit.StopMove();
                }
            }
        }