如何防止我的游戏对象在尝试移动时始终处于旋转状态

问题描述:

因此,我有一个通过游戏杆移动的gameobject(我的玩家)。如果没有下面的旋转代码,我的播放器移动得很顺利,但是当我将旋转代码放在下方时,我尝试移动它时,游戏对象始终旋转(360度)。如何防止我的游戏对象在尝试移动时始终处于旋转状态

我的目标是当玩家转动时围绕特定角度旋转玩家。

void Update() 
{ 
    // move 
    _rigidbody.MovePosition(transform.position + (transform.forward * leftController.GetTouchPosition.y * Time.deltaTime * speedMovements) + 
     (transform.right * leftController.GetTouchPosition.x * Time.deltaTime * speedMovements)); 

    //rotate 
    double rad = Mathf.Atan2(leftController.GetTouchPosition.y, leftController.GetTouchPosition.x); // In radians 
    double deg = rad * (180/System.Math.PI); 
    transform.RotateAround(transform.position, Vector3.up * Time.deltaTime, (float) deg); 
} 
+1

在最后一行代码中。 'transform.RotateAround(transform.position,Vector3.up,Time.deltaTime *(float)deg);' 不应该是更像这样吗? – Thalthanas

+0

@EmreE好一点。但现在的问题是,当我举例时,我的操纵杆位于左上角位置时,我的播放器在该位置移动,在此期间,由于每一帧都会一直旋转。我想要的是我正常走到一个位置,每个角度只应该有一次旋转。它在我移动时旋转360°... – KeyNavas

纠正我,如果我错了,但如果我的问题是正确的我认为你使用了错误的功能。

对我来说,RotateAround将是一个行星的轨道例如(永久移动)更好

如果你只是想在一个给定的方向旋转播放器和停止当它这样做,你应该尝试这些功能,而不是:

  • Transform.LookAt
  • Quaternion.LookRotation
  • Quaternion.RotateTowards
  • Quaternion.Slerp