예제 #1
0
        public override ActionLane Update(ActionLane blockedLanes)
        {
            var target = new ShipTarget(enemyTarget);

            ship.BlockGrid.Metadata.TurretList.SetTarget(target);

            return(ActionLane.AimTurrets);
        }
예제 #2
0
        public override ActionLane Update(ActionLane blockedLanes)
        {
            if (Target == null)
            {
                return(ActionLane.None);
            }

            ship.Navigation.LookAt = Target;
            return(ActionLane.Rotation);
        }
예제 #3
0
        public override ActionLane Update(ActionLane blockedLanes)
        {
            if (Target == null)
            {
                return(ActionLane.None);
            }

            ship.Navigation.MoveTo = Target;
            return(ActionLane.Movement);
        }
예제 #4
0
        public void RunActions()
        {
            ActionLane mask = 0;

            foreach (var action in SortActions())
            {
                var shouldRun = (mask & action.Lanes) == 0;

                if (shouldRun)
                {
                    action.Blocking = action.Update(mask);
                    mask           |= action.Blocking;
                }
                else
                {
                    action.Blocking = ActionLane.None;
                }
            }
        }
예제 #5
0
        public override ActionLane Update(ActionLane blockedLanes)
        {
            var globalPos     = ship.transform.position.ToVector2();
            var currentVel    = ship.Rigidbody2D.velocity;
            var headingVector = currentVel.normalized;

            foreach (var neighbour in neighbourCache)
            {
                var neighbourPos = neighbour.transform.position.ToVector2();

                MofidyHeading(ref headingVector, neighbourPos - globalPos, neighbour);
            }

            headingVector = headingVector.normalized;
            var offset = Vector2.ClampMagnitude(headingVector * settings.headingCorrectionMultiplier,
                                                settings.detectionRadius);
            var target = new StaticPositionTarget(globalPos + offset);

            ship.Navigation.MoveTo = target;

            return(ActionLane.Movement);
        }
예제 #6
0
 public abstract ActionLane Update(ActionLane blockedLanes);