Example #1
0
    override public Vector3 GetPos(
        Vector3 _pos,
        float _speed,
        eMOVE_OUT_TYPE _outType = eMOVE_OUT_TYPE.POS,
        eIGNORE_AXIS _axis      = eIGNORE_AXIS.NONE)
    {
        if (m_pathList == null)
        {
            if (_outType == eMOVE_OUT_TYPE.DELTA)
            {
                return(Vector3.zero);
            }
            return(_pos);
        }


        float _fMoveSpeed = _speed * Time.deltaTime;

        m_target = GetIgnoreAxis(m_target, _axis);
        _pos     = GetIgnoreAxis(_pos, _axis);
        Vector3 vec3Movement = m_target - _pos;

        if (_fMoveSpeed < vec3Movement.magnitude)
        {
            Vector3 _delta = vec3Movement.normalized * _fMoveSpeed;
            if (_outType == eMOVE_OUT_TYPE.DELTA)
            {
                return(_delta);
            }

            return(_pos + _delta);
        }
        else
        {
            Vector3 _delta = vec3Movement.normalized * _fMoveSpeed;
            ++m_pathIndex;
            if (m_pathList.Length > m_pathIndex)
            {
                m_target = m_pathList[m_pathIndex];
            }
            else
            {
                m_isStop = true;
            }

            if (_outType == eMOVE_OUT_TYPE.DELTA)
            {
                return(_delta);
            }

            return(_pos + _delta);
        }
    }
    static public Vector3 GetIgnoreAxis(Vector3 _pos, eIGNORE_AXIS _axis)
    {
        switch (_axis)
        {
        case eIGNORE_AXIS.X:
            _pos.x = 0f;
            break;

        case eIGNORE_AXIS.Y:
            _pos.y = 0f;
            break;

        case eIGNORE_AXIS.Z:
            _pos.z = 0f;
            break;
        }

        return(_pos);
    }
    virtual public Vector3 GetPos(
        Vector3 _pos,
        float _speed,
        eMOVE_OUT_TYPE _outType = eMOVE_OUT_TYPE.POS,
        eIGNORE_AXIS _axis      = eIGNORE_AXIS.NONE)
    {
        if (true == m_isStop)
        {
            return(_pos);
        }

        float _fMoveSpeed = _speed * Time.deltaTime;

        m_target = GetIgnoreAxis(m_target, _axis);
        _pos     = GetIgnoreAxis(_pos, _axis);

        Vector3 vec3Movement = m_target - _pos;

        if (_fMoveSpeed < vec3Movement.magnitude)
        {
            Vector3 _delta = vec3Movement.normalized * _fMoveSpeed;
            if (_outType == eMOVE_OUT_TYPE.DELTA)
            {
                return(_delta);
            }

            return(_pos + _delta);
        }
        else
        {
            m_isStop = true;
            Vector3 _delta = vec3Movement;
            if (_outType == eMOVE_OUT_TYPE.DELTA)
            {
                return(_delta);
            }
            return(_pos + _delta);
        }
    }