public override void Enter()
            {
                ship.StartCoroutine(IUpdate());

                patrolBehaviour = ship.boid.GetBehaviour <OffsetPursue> ();
                Pursue pursueBehaviour = ship.boid.GetBehaviour <Pursue> ();

                Wander wanderBehaviour = ship.boid.GetBehaviour <Wander> ();

                if (wanderBehaviour != null)
                {
                    wanderBehaviour.enabled = true;
                    wanderBehaviour.weight  = 0.25f;
                }

                if (patrolBehaviour != null)
                {
                    patrolBehaviour.enabled = true;
                }

                if (pursueBehaviour != null)
                {
                    pursueBehaviour.enabled = false;
                }
            }
Beispiel #2
0
            public override void Enter()
            {
                updateRefresh = 0.5f;

                Wander wanderBehaviour = ship.boid.GetBehaviour <Wander> ();

                if (wanderBehaviour != null)
                {
                    wanderBehaviour.enabled = true;
                    wanderBehaviour.weight  = 0.25f;
                }

                offsetPursueBehaviour = ship.boid.GetBehaviour <OffsetPursue> ();

                if ((offsetPursueBehaviour == null) || (escortingShip == null))
                {
                    AttackEmporer();
                }
                else
                {
                    offsetPursueBehaviour.enabled = true;
                    offsetPursueBehaviour.leader  = escortingShip;
                    offsetPursueBehaviour.RefreshOffset();
                }

                ship.StartCoroutine(IUpdate());
            }
Beispiel #3
0
 public override void Enter()
 {
     boid                  = owner.GetComponent <Boid>();
     offsetPursue          = owner.GetComponent <OffsetPursue>();
     offsetPursue.leader   = leader;
     offsetPursue.enabled  = true;
     lastVelocityMagnitude = -1;
 }
            public ProtonPatrolState(StateMachine _stateMachine, Ship _ship, BoidActor _leader) : base(_stateMachine, _ship)
            {
                patrolBehaviour = ship.boid.GetBehaviour <OffsetPursue> ();

                if (patrolBehaviour != null)
                {
                    patrolBehaviour.leader = _leader;
                }
            }
Beispiel #5
0
 private void Start()
 {
     targetingSystem = GetComponent <TargetingSystem>();
     pursue          = GetComponent <Pursue>();
     arrive          = GetComponent <Arrive>();
     seek            = GetComponent <Seek>();
     flee            = GetComponent <Flee>();
     fleeAndArrive   = GetComponent <FleeAndArrive>();
     offsetPursue    = GetComponent <OffsetPursue>();
 }
Beispiel #6
0
    public override void Think()
    {
        // Update the offset as it might change as members die.
        OffsetPursue offsetPursue = owner.GetComponent <OffsetPursue>();
        Squad        squad        = owner.transform.parent.transform.GetComponent <Squad>();
        Vector3      offset       = squad.getSquadOffset(owner.gameObject);

        offsetPursue.leader = squad.leader.GetComponent <Boid>();
        offsetPursue.offset = offset;
    }
    GameObject CreateFollower(Vector3 offset, Boid leader)
    {
        GameObject follower = GameObject.Instantiate <GameObject>(prefab);

        follower.transform.position = this.transform.TransformPoint(offset);
        follower.transform.parent   = this.transform;
        follower.transform.rotation = this.transform.rotation;
        OffsetPursue op = follower.AddComponent <OffsetPursue>();

        op.leader = leader;
        return(follower);
    }
Beispiel #8
0
 // Use this for initialization
 void Start()
 {
     //select whether leader or follower to activate behaviour
     if (leader == true)
     {
         s = GetComponent <Seek> ();
     }
     else
     {
         o = GetComponent <OffsetPursue> ();
     }
     rb = GetComponent <Rigidbody>();
 }
Beispiel #9
0
    public override void Enter()
    {
        OffsetPursue offsetPursue = owner.GetComponent <OffsetPursue>();
        Squad        squad        = owner.transform.parent.transform.GetComponent <Squad>();
        Vector3      offset       = squad.getSquadOffset(owner.gameObject);

        offsetPursue.predefinedOffset = true;
        offsetPursue.leader           = squad.leader.GetComponent <Boid>();
        offsetPursue.offset           = offset;

        owner.GetComponent <ObstacleAvoidance>().enabled = true;
        owner.GetComponent <OffsetPursue>().enabled      = true;
    }
Beispiel #10
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));
                    }
                }
            }
    void CreateFollower(Vector3 offset, Boid leader)
    {
        GameObject follower = GameObject.Instantiate <GameObject> (prefab);

        follower.transform.position = leader.transform.TransformPoint(offset);
        follower.transform.parent   = this.transform;
        follower.transform.rotation = this.transform.rotation;

        OffsetPursue op = follower.AddComponent <OffsetPursue> ();

        op.leader = leader;
        Seek seek = follower.AddComponent <Seek> ();

        seek.enabled = !seek.enabled;
        Boid b = follower.GetComponent <Boid> ();

        b.maxSpeed = 6.5f;
    }
    void Awake()
    {
        //instantiaite leader
        GameObject leaderEagleShip = GameObject.Instantiate <GameObject>(prefab);

        leaderEagleShip.transform.position = transform.position;
        Seek leaderSeek = leaderEagleShip.AddComponent <Seek>();

        //seek target position 1000 units ahead of leader
        leaderSeek.target = new Vector3(0, 0, 1000);

        for (int i = 1; i < followers + 1; i++)
        {
            Vector3 row = leaderEagleShip.transform.position;
            //adjust for row relative to leader position
            row.z -= gap * i;

            //left follower position
            Vector3 leftFollowerPosition = row;
            //adjust x for column position
            leftFollowerPosition.x -= gap * i;

            //right follower position
            Vector3 rightFollowerPosition = row;
            //adjsut x for column position
            rightFollowerPosition.x += gap * i;

            //instantiate left follower
            GameObject leftFollowerEagleShip = GameObject.Instantiate <GameObject>(prefab);
            leftFollowerEagleShip.transform.position = leftFollowerPosition;
            OffsetPursue leftFollowPursue = leftFollowerEagleShip.AddComponent <OffsetPursue>();
            //pursue leader
            leftFollowPursue.target = new Vector3(0, 0, 1000);
            leftFollowPursue.leader = leaderEagleShip.GetComponent <Boid>();

            //instantiate right follower
            GameObject rightFollowerEagleShip = GameObject.Instantiate <GameObject>(prefab);
            rightFollowerEagleShip.transform.position = rightFollowerPosition;
            OffsetPursue rightFollowPursue = rightFollowerEagleShip.AddComponent <OffsetPursue>();
            //pursue leader
            rightFollowPursue.target = new Vector3(0, 0, 1000);
            rightFollowPursue.leader = leaderEagleShip.GetComponent <Boid>();
        }
    }
Beispiel #13
0
    //Method to create Follwers
    void CreateFollower(Vector3 offset, Boid leader)
    {
        GameObject follower = GameObject.Instantiate <GameObject> (prefab);

        follower.transform.position = leader.transform.TransformPoint(offset);
        follower.transform.parent   = this.transform;
        follower.transform.rotation = this.transform.rotation;
        follower.name = "follower";
        //add steering behaviours
        OffsetPursue op = follower.AddComponent <OffsetPursue> ();

        op.leader = leader;
        Seek seek = follower.AddComponent <Seek> ();

        seek.enabled = !seek.enabled;
        Path path = follower.AddComponent <Path> ();

        path.mothership = mothership;
        FollowPath fpath = follower.AddComponent <FollowPath> ();

        fpath.path    = path;
        fpath.enabled = !fpath.enabled;
        ObstacleAvoidance obavd = follower.AddComponent <ObstacleAvoidance> ();

        obavd.enabled = !obavd.enabled;

        //Add boid and seek to the  bombs(missiles)
        int count = follower.transform.Find("Bombs").gameObject.transform.childCount;

        for (int i = 0; i < count; i++)
        {
            Boid b = follower.transform.Find("Bombs").GetChild(i).gameObject.AddComponent <Boid> ();
            b.maxSpeed        = 25f;
            b.explosionPrefab = expPrefab;
            Seek sb = follower.transform.Find("Bombs").GetChild(i).gameObject.AddComponent <Seek> ();
            sb.target  = RandomTarget();
            sb.enabled = !sb.enabled;
        }
    }