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); } }