コード例 #1
0
            public override IEnumerator IUpdate()
            {
                yield return(null);

                if (ship != null)
                {
                    while ((ship.enabled) && (stateMachine.state == this))
                    {
                        if (leaderShip.stateMachine.state.GetType() == typeof(BansheePersueState))
                        {
                            BoidActor leaderTarget = leaderShip.boid.GetBehaviour <Pursue> ().target;
                            if (leaderTarget != null)
                            {
                                if (Vector3.Distance(leaderShip.transform.position, leaderTarget.transform.position) <= disperceDistance)
                                {
                                    Ship threatShip = ShipManager.main.BiggestThreat(ship.transform.position, ship.faction, threatDistance);
                                    if (threatShip != null)
                                    {
                                        stateMachine.ChangeState(new BansheePersueState(stateMachine, ship, threatShip));
                                    }
                                    else
                                    {
                                        yield return(new WaitForSeconds(updateRefresh));
                                    }
                                }
                            }
                            else
                            {
                                stateMachine.ChangeState(new BansheePatrolState(stateMachine, ship, ShipManager.main.emporer));
                            }
                        }
                        yield return(new WaitForSeconds(updateRefresh));
                    }
                }
            }
コード例 #2
0
            public ProtonPatrolState(StateMachine _stateMachine, Ship _ship, BoidActor _leader) : base(_stateMachine, _ship)
            {
                patrolBehaviour = ship.boid.GetBehaviour <OffsetPursue> ();

                if (patrolBehaviour != null)
                {
                    patrolBehaviour.leader = _leader;
                }
            }
コード例 #3
0
            private void LookForBomber()
            {
                OffsetPursue offsetPursue = ship.boid.GetBehaviour <OffsetPursue> ();

                if (offsetPursue != null)
                {
                    BoidActor escortingShip = offsetPursue.leader;
                    if (escortingShip != null)
                    {
                        stateMachine.ChangeState(new IntercepterEscortState(stateMachine, ship, escortingShip));
                    }
                    else
                    {
                        stateMachine.ChangeState(new IntercepterEmporerState(stateMachine, ship, ShipManager.main.emporer));
                    }
                }
            }
コード例 #4
0
 public IntercepterEscortState(StateMachine _stateMachine, Ship _ship, BoidActor _escortingShip) : base(_stateMachine, _ship)
 {
     escortingShip = _escortingShip;
 }