如何防止我的游戏对象在尝试移动时始终处于旋转状态
问题描述:
因此,我有一个通过游戏杆移动的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);
}
答
纠正我,如果我错了,但如果我的问题是正确的我认为你使用了错误的功能。
对我来说,RotateAround将是一个行星的轨道例如(永久移动)更好
如果你只是想在一个给定的方向旋转播放器和停止当它这样做,你应该尝试这些功能,而不是:
- Transform.LookAt
- Quaternion.LookRotation
- Quaternion.RotateTowards
- Quaternion.Slerp
在最后一行代码中。 'transform.RotateAround(transform.position,Vector3.up,Time.deltaTime *(float)deg);' 不应该是更像这样吗? – Thalthanas
@EmreE好一点。但现在的问题是,当我举例时,我的操纵杆位于左上角位置时,我的播放器在该位置移动,在此期间,由于每一帧都会一直旋转。我想要的是我正常走到一个位置,每个角度只应该有一次旋转。它在我移动时旋转360°... – KeyNavas