Example #1
0
    public void Stop()
    {
        if (m_state == EnumNavigationState.e_finished)
        {
            return;
        }

        m_agent.isStopped = true;
        m_state           = EnumNavigationState.e_stopped;
    }
Example #2
0
    // Update is called once per frame
    void Update()
    {
        switch (m_state)
        {
        case EnumNavigationState.e_pending:
            if (!m_agent.pathPending)
            {
                m_state = EnumNavigationState.e_moving;
            }
            break;

        case EnumNavigationState.e_moving:
            // fin déplacement
            if (m_agent.remainingDistance - m_agent.stoppingDistance <= float.Epsilon)
            {
                MovementEnding();
                m_state = EnumNavigationState.e_finished;
            }
            else if (!float.IsNaN(m_orientation) && m_agent.remainingDistance <= m_rotatingDistance)
            {
                RotationBegining();
                m_state = EnumNavigationState.e_rotatingAndMoving;
            }
            break;

        case EnumNavigationState.e_rotatingAndMoving:
            // fin déplacement
            if (m_agent.remainingDistance - m_agent.stoppingDistance <= float.Epsilon)
            {
                m_state = EnumNavigationState.e_rotating;
            }
            break;

        case EnumNavigationState.e_rotating:
            // fin de rotation
            if (m_state == EnumNavigationState.e_rotating && Mathf.Abs(transform.eulerAngles.y - m_orientation) <= 1f)
            {
                RotationEnding();
                m_state = EnumNavigationState.e_finished;
            }
            else
            {
                Rotate();
            }
            break;

        case EnumNavigationState.e_finished:
            break;

        case EnumNavigationState.e_stopped:
            break;

        default: break;
        }
    }
Example #3
0
    /********  OUR MESSAGES     ************************/

    /********  PUBLIC           ************************/

    public void Goto(Vector3 p_destination)
    {
        // store/init data
        m_destination = p_destination;
        m_orientation = float.NaN;

        // agent will try to face the movement direction while moving
        m_agent.updateRotation = true;

        m_agent.SetDestination(p_destination);

        // currently computing path
        m_state = EnumNavigationState.e_pending;
    }