private void Start()
    {
        //Set up state machine
        Dictionary <EnemyAIStateType, BaseState> stateMachineDictionary = new Dictionary <EnemyAIStateType, BaseState>();

        foreach (EnemyAIStateType state in EnemyStates)
        {
            stateMachineDictionary.Add(state, StateFactory.CreateBaseState(state, this));
        }
        stateMachine      = new EnemyAIStateMachine(stateMachineDictionary);
        TargetDestination = null;

        enemyController = GetComponent <Enemy>();
        MovementData    = (EnemyMovementData)enemyController.GetFiringData();

        navMeshAgent = GetComponent <NavMeshAgent>();

        //navMeshAgent.updateRotation = false;
        navMeshAgent.acceleration = MovementData.NavMeshAcceleration; // 8; //enemy
        navMeshAgent.angularSpeed = MovementData.NavMeshAngularSpeed; //120; // enemy
        navMeshAgent.speed        = MovementData.NavMeshVelocity;     //3; //

        //Events
        enemyController.UpdateTargetedPlayer += EnemyController_UpdateTargetedPlayer;
        bulletDetector.AddDangerousBullet    += BulletDetector_AddDangerousBullet;
    }
Beispiel #2
0
    private void Initialization()
    {
        EnemyStatePatrolling = GetComponent <EnemyStatePatrolling>();
        EnemyStateFighting   = GetComponent <EnemyStateFighting>();

        EnemyAIStateMachine = EnemyStatePatrolling;
        EnemyAIStateMachine.SeekingBattle(this);
    }
Beispiel #3
0
    public void DecideWhatToDo()
    {
        GameObject focusTarget = CharacterPresenter.CharacterType.SearchingTarget();

        if (focusTarget == null)
        {
            EnemyAIStateMachine.SeekingBattle(this);
        }
        else
        {
            EnemyAIStateMachine.Fighting(this, focusTarget);
        }
    }
Beispiel #4
0
 private protected override Vector2 GetInputVector()
 {
     return(EnemyAIStateMachine.GetInputVector(this));
 }