Exemplo n.º 1
0
    public void Update()
    {
        switch (m_currentState)
        {
        case EStates.INITIAL:
            m_nextState = EStates.WANDER;
            ChangeState();
            break;

        case EStates.WANDER:

            if (!MathExtent.IsInRange(Vector3.Distance(this.transform.position, m_blackboard.m_player.position), m_blackboard.m_alertRadius))
            {
                m_nextState = EStates.FIGHT;
                ChangeState();
            }
            break;

        case EStates.FIGHT:

            if (MathExtent.IsInRange(Vector3.Distance(this.transform.position, m_blackboard.m_player.position), m_blackboard.m_alertRadius))
            {
                m_nextState = EStates.WANDER;
                ChangeState();
            }
            break;
        }
    }
Exemplo n.º 2
0
    public void Update()
    {
        switch (m_currentState)
        {
        case EState.INITIAL:
            m_nextState = EState.KEEP_POSITION;
            ChangeState();
            break;

        case EState.KEEP_POSITION:
            if (m_attackTimer.CheckTimer())
            {
                m_nextState = EState.SHOOT;
                ChangeState();
                break;
            }
            break;

        case EState.SHOOT:

            if (MathExtent.IsInRange(Vector3.Distance(transform.position, m_blackboard.m_player.position), m_blackboard.m_soloAttackDistanceToPlayer))
            {
                Shoot();
                m_nextState = EState.KEEP_POSITION;
                ChangeState();
                break;
            }

            break;
        }
    }