示例#1
0
    void Start()
    {
        Begin();
        AStar.SetAllNodes();
        SprintContainer sprint = GetComponent <SprintContainer>();

        bringFlagHome = new ReturnHome(theTransform, enemy.GetComponent <Transform>(), sprint, teamFlag);
        seekEnemyFlag = new SeekEnemyFlag(theTransform, sprint, enemyFlag);
        captureEnemy  = new Cutoff(theTransform, sprint, enemyFlag, teamFlag);
        chaseEnemy    = new Chase(theTransform, enemyTransform, sprint);

        machine = new StateMachine(seekEnemyFlag);

        initialEnemyFlagPosition = enemyFlagObject.transform.position;
        initialTeamFlagPosiiton  = teamFlagObject.transform.position;
    }
示例#2
0
        void Start()
        {
            AStar.SetAllNodes();

            theTransform = GetComponent <Transform>();
            Transform       enemyTransform = enemy.GetComponent <Transform>();
            SprintContainer sprinter       = GetComponent <SprintContainer>();

            //Boolean Checks
            CanSeeEnemy  seeEnemy          = new CanSeeEnemy(theTransform, enemyTransform);
            CloserToHome closerHome        = new CloserToHome(theTransform, enemyTransform, teamFlagNode);
            FlagCaptured teamFlagCaptured  = new FlagCaptured(teamFlag);
            FlagCaptured enemyFlagCaptured = new FlagCaptured(enemyFlag);

            //Movement Leaves
            GoToBase      returnHome  = new GoToBase(theTransform, enemyTransform, sprinter, teamFlagNode);
            SeekEnemyFlag getFlag     = new SeekEnemyFlag(theTransform, sprinter, enemyFlagNode);
            ChaseEnemy    followEnemy = new ChaseEnemy(theTransform, enemyTransform, sprinter);
            TrackEnemy    findEnemy   = new TrackEnemy(theTransform, sprinter, teamFlagNode, enemyFlagNode);

            //Do this if team flag not captured
            Sequence regularReturnHome = new Sequence(new List <Routine> {
                enemyFlagCaptured, returnHome
            });
            Selector flagNotCapturedSelector = new Selector(new List <Routine> {
                regularReturnHome, getFlag
            });

            //Do this if team flag captured
            Sequence closerHomeSequence = new Sequence(new List <Routine>()
            {
                closerHome, returnHome
            });
            Sequence seeEnemySequence = new Sequence(new List <Routine>()
            {
                seeEnemy, followEnemy
            });
            Selector seeEnemySelector = new Selector(new List <Routine>()
            {
                seeEnemySequence, findEnemy
            });
            Selector haveFlagSelector = new Selector(new List <Routine>()
            {
                closerHomeSequence, seeEnemySelector
            });
            Sequence haveFlagSequence = new Sequence(new List <Routine>()
            {
                enemyFlagCaptured, haveFlagSelector
            });
            Selector flagCapturedSelector = new Selector(new List <Routine>()
            {
                haveFlagSequence, seeEnemySelector
            });
            Sequence flagCapturedSequence = new Sequence(new List <Routine>()
            {
                teamFlagCaptured, flagCapturedSelector
            });

            tree = new Selector(new List <Routine>()
            {
                flagCapturedSequence, flagNotCapturedSelector
            });
        }