Пример #1
0
 private void Awake()
 {
     patrolBehaviour         = GetComponent <PatrolBehaviour>();
     chaseBehaviour          = GetComponent <ChaseBehaviour>();
     patrolBehaviour.enabled = true;
     chaseBehaviour.enabled  = false;
 }
Пример #2
0
 private void Start()
 {
     fireTime = Random.Range(minFireTime, maxFireTime);
     cb       = GetComponent <ChaseBehaviour>();
     bp       = GameObject.FindGameObjectWithTag("BulletPool").GetComponent <BulletPool>();
     enem     = GetComponent <Enemy>();
     if (name.Contains("Spider"))
     {
         bp = GameObject.FindGameObjectWithTag("StunBulletPool").GetComponent <BulletPool>();
     }
 }
    protected override void Start()
    {
        base.Start();
        currentState = State.Death;

        enemyDetector   = GetComponentInChildren <EnemyDetector>();
        patrolBehaviour = GetComponent <PatrolBehaviour>();
        chaseBehaviour  = GetComponent <ChaseBehaviour>();
        mover           = GetComponent <Mover>();
        fighter         = GetComponent <Fighter>();
        anim            = GetComponent <Animator>();

        enemyDetector.PlayerDetected.AddListener(UpdateTarget);
        enemyDetector.PlayerLost.AddListener(UpdateTarget);
    }
Пример #4
0
    //Enable random dispersion of behavious
    private EnemyBehaviour GiveRandomBehaviour()
    {
        EnemyBehaviourCodes behvCode  = behaviours[Random.Range(0, behaviours.Length)];
        EnemyBehaviour      behaviour = null;

        switch (behvCode)
        {
        case EnemyBehaviourCodes.CHASE:
            behaviour = new ChaseBehaviour();
            break;

        case EnemyBehaviourCodes.ZIGZAG:
            behaviour = new ZigzagBehaviour();
            break;

        case EnemyBehaviourCodes.PRESET:
            behaviour = new PresetBehaviour();
            break;
        }

        return(behaviour);
    }
Пример #5
0
 private void Start()
 {
     GetNextPoint();
     cb = GetComponent <ChaseBehaviour>();
 }
Пример #6
0
    void Start()
    {
        //VARIABLES
        lookB         = GetComponent <LookAroundBehaviour>();
        patrolB       = GetComponent <PatrolBehaviour>();
        chaseB        = GetComponent <ChaseBehaviour>();
        atkB          = GetComponent <AttackBehaviour>();
        coneVision    = GetComponent <ConeVision>();
        fsmCurrentTxt = fsmCurrentTxt.GetComponent <TextMeshProUGUI>();
        velocity      = GetComponent <Velocity>();
        health        = GetComponent <HealthBar>();

        //STATES
        FSMState Start        = new FSMState();
        FSMState lookAround   = new FSMState();
        FSMState patrol       = new FSMState();
        FSMState lastPosition = new FSMState();
        FSMState chase        = new FSMState();
        FSMState attack       = new FSMState();


        //ACTIONS
        Start.enterActions.Add(StartAction);

        lookAround.enterActions.Add(LookAround);
        lookAround.exitActions.Add(lookB.StopLooking);

        patrol.enterActions.Add(Patrol);
        patrol.exitActions.Add(patrolB.StopPatrol);

        chase.enterActions.Add(Chase);
        chase.exitActions.Add(chaseB.StopAtLastKnowPosition);

        lastPosition.enterActions.Add(LastPosition);

        attack.enterActions.Add(chaseB.StopNow);
        attack.enterActions.Add(Attack);
        attack.exitActions.Add(atkB.StopAttacking);

        //TRANSITIONS
        FSMTransition t0 = new FSMTransition(AlwaysTrue);
        FSMTransition t1 = new FSMTransition(PlayerHidden);
        FSMTransition t2 = new FSMTransition(PlayerDetected);
        FSMTransition t3 = new FSMTransition(PlayerNotDetected);
        FSMTransition t4 = new FSMTransition(PlayerInAttackRange);
        FSMTransition t5 = new FSMTransition(PlayerNotInAttackRange);
        FSMTransition t6 = new FSMTransition(PatrolingFinished);
        FSMTransition t7 = new FSMTransition(NotMoving);
        FSMTransition t8 = new FSMTransition(PlayerNotHidden);

        //LINK STATE - TRANSITION
        Start.AddTransition(t0, patrol);

        lookAround.AddTransition(t1, patrol);
        lookAround.AddTransition(t8, chase);
        lookAround.AddTransition(t2, chase);

        patrol.AddTransition(t2, chase);
        patrol.AddTransition(t6, lookAround);

        chase.AddTransition(t3, lastPosition);
        chase.AddTransition(t4, attack);

        lastPosition.AddTransition(t7, lookAround);
        lastPosition.AddTransition(t2, chase);

        attack.AddTransition(t5, chase);

        //INITIAL STATE
        fsm = new FSM(Start);
        StartCoroutine(Run());
    }
Пример #7
0
 // Use this for initialization
 void Start()
 {
     sb   = GetComponent <ShootBehaviour>();
     cb   = GetComponent <ChaseBehaviour>();
     anim = GetComponentInChildren <Animator>();
 }