如何在移动游戏时阻止我的游戏对象一直旋转

时间:2017-08-08 13:58:10

标签: c# unity3d rotation angle

所以我有一个游戏对象(我的玩家)通过操纵杆移动。如果没有旋转代码,我的播放器移动得很顺畅,但是当我把旋转代码放在游戏对象下面时,我会一直旋转(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 个答案:

答案 0 :(得分:2)

如果我错了,请纠正我,但如果我的问题得到解决,我认为您使用了错误的功能。

对我而言,RotateAround对于行星轨道来说会更好(例如永久移动)

如果您只想在给定方向上旋转播放器并在完成后停止播放,则应尝试使用这些功能:

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