Example #1
0
    public override void Execute()
    {
        if (Time.time > timeToCheck)
        {
            if (CheckNearObstacle() == true)
            {
                randomDirection = GenerateRandomDirection();
            }
            timeToCheck = Time.time + 0.2f;
        }

        if (Time.time > timeToLook)
        {
            if (entity.LookForTarget() == true)
            {
                EnemyChaseState newState = new EnemyChaseState();
                entity.stateMachine.ChangeState(newState);
            }
            else
            {
                timeToLook = Time.time + 1.0f;  // While patroling takes more time to detect the player, because the enemy is cold.
            }
        }

        entity.Move(randomDirection, entity.patrolSpeed);
    }
Example #2
0
 // Use this for initialization
 void Start()
 {
     enemyChaseState  = GetComponent <EnemyChaseState>();
     enemyWanderState = GetComponent <EnemyWanderState>();
     childSprite      = transform.Find("Sprite").GetComponent <SpriteRenderer>();
     CurrentState     = enemyWanderState;
     CurrentState.OnStateEnter(this);
 }
    private static EnemyChaseState _instance; //only declared once

    private EnemyChaseState()                 //set instance to itself
    {
        if (_instance != null)
        {
            return;
        }

        _instance = this;
    }
Example #4
0
 private void InitStates()
 {
     State       = new FSM <EnemyState, BaseEnemyAIState>();
     _idleState  = new EnemyIdleState(this);
     _chaseState = new EnemyChaseState(this);
     State.Add(EnemyState.IDLE, _idleState);
     State.Add(EnemyState.CHASE, _chaseState);
     State.SetState(EnemyState.IDLE);
 }
Example #5
0
    private void MakeFSM()
    {
        mFSMSystem = new EnemyFSMSystem();
        EnemyChaseState chaseState = new EnemyChaseState(mFSMSystem, this);

        chaseState.AddTransition(EnemyTransition.CanAttack, EnemyStateID.Attack);
        EnemyAttackState attackState = new EnemyAttackState(mFSMSystem, this);

        attackState.AddTransition(EnemyTransition.LostSoldier, EnemyStateID.Chase);
        mFSMSystem.AddState(chaseState, attackState);
    }
Example #6
0
    protected virtual void MakeFSM()
    {
        fsmSystem = new EnemySatateSystem();

        EnemyChaseState chase = new EnemyChaseState(fsmSystem, this);

        chase.AddTransition(EnemyTransition.CanAttack, EnemyStateID.Attack);
        fsmSystem.AddState(chase);

        EnemyAttackState attack = new EnemyAttackState(fsmSystem, this);

        attack.AddTransition(EnemyTransition.LostSoldier, EnemyStateID.Chase);
        fsmSystem.AddState(attack);
    }
Example #7
0
    public override void MakeFSM()
    {
        EnemyPatrolState patrol = new EnemyPatrolState();

        patrol.AddTransition(EntityTransition.TargetSpotted, EntityStateID.Chase);

        EnemyChaseState chase = new EnemyChaseState();

        chase.AddTransition(EntityTransition.LostTarget, EntityStateID.Patrol);

        fsm = new EntityFSMSystem();
        fsm.AddState(patrol);
        fsm.AddState(chase);
    }
Example #8
0
    private void MakeFsm()
    {
        Fsm = new EnemyFSMSystem();

        EnemyChaseState chase = new EnemyChaseState(Fsm, this);

        chase.AddTransition(EnemyTransition.CanAttack, EnemyStateID.Attack);

        EnemyAttackState attack = new EnemyAttackState(Fsm, this);

        attack.AddTransition(EnemyTransition.LostSoldier, EnemyStateID.Chase);

        Fsm.AddState(chase, attack);
    }
Example #9
0
    public override void Execute()
    {
        if (Time.time > searchTime)
        {
            EnemyPatrolState newState = new EnemyPatrolState();
            entity.stateMachine.ChangeState(newState);
        }

        if (!positionReached)
        {
            // Move to the last position where the target was seen...
            entity.Move(lastTargetPosition - entity.transform.position, entity.chaseSpeed);
            if (Vector3.Distance(lastTargetPosition, entity.transform.position) < 1.0f)
            {
                positionReached   = true;
                directionToRotate = lastTargetDirection;
                timeToRotate      = Time.time + 1.0f;
            }
        }
        else
        {
            // ... and look around from that position.
            if (Time.time > timeToRotate)
            {
                directionToRotate = Quaternion.Euler(0.0f, (Random.value > 0.5f) ? 90.0f : -90.0f, 0.0f) * entity.transform.forward;
                timeToRotate      = Time.time + 2.0f;
            }

            entity.Move(directionToRotate, entity.chaseSpeed * 0.35f);
        }

        if (Time.time > timeToCheck)
        {
            if (entity.LookForTarget() == true)
            {
                EnemyChaseState newState = new EnemyChaseState();
                entity.stateMachine.ChangeState(newState);
            }
            else
            {
                timeToCheck = Time.time + 0.4f; // Check with a moderated frecuency.
            }
        }
    }