所以基本上問題是,當我想旋轉角色並移動角色時,移動不會像預期的那樣正常工作。如果我的y座標低於零,則角色向後移動而不是向前移動。所以基本上是在相反的方向。此外,如果我的操縱桿的座標是例如:y = 0,23和x = 0,8,我的角色顯示在該方向,但向右下移動。 PS:y和x值是從0到1(單位圓) 但是,如果我只移動角色而不旋轉他,角色的移動就像它應該的那樣。由於旋轉,角色移動將無法正常工作
這裏是我當前的代碼:
void Update()
{
if (myX != leftController.GetTouchPosition.x || myY != leftController.GetTouchPosition.y) { //checks if player changed position.
myX = leftController.GetTouchPosition.x;
myY = leftController.GetTouchPosition.y;
double rad = Mathf.Atan2(leftController.GetTouchPosition.y, leftController.GetTouchPosition.x); // In radians
double deg = rad * (180/System.Math.PI); // values from up right to up left : +0 to +180 and from down left to down right: -180 to -0
double myRotAngle = 0;
//calculating the specific angle in which the character should move
if (deg < 0) {
myRotAngle = 90 + ((deg * -1));
} else if (deg >= 0 && deg <= 90)
myRotAngle = 90 - deg;
else if (deg >= 90 && deg <= 180)
myRotAngle = 270 + (180 - deg);
transform.localEulerAngles = new Vector3 (0f,(float)myRotAngle, 0f);//rotate
}
_rigidbody.MovePosition(transform.position + (transform.forward * leftController.GetTouchPosition.y * Time.deltaTime * speedMovements) +
(transform.right * leftController.GetTouchPosition.x * Time.deltaTime * speedMovements));//move
}
以及MovePosition的剛體有MoveRotation方法,你應該看看那個 –
@PierreBaret以前已經做過。結果不會改變 – KeyNavas
爲什麼不移動使用變換而不是Rigidbody? –