Я работаю над небольшим проектом в единстве. Это игра сверху вниз, в которой есть персонаж, управляемый джойстиком. Когда я запускаю игру, мой персонаж начинает -90 в z-позиции, которая должна быть в 0. Но когда я перемещаю джойстик в направлении, которое я хотел, чтобы он работал, он работает нормально, это означает, что он смотрит в направлении, в котором он бежит,Однако, если я отпущу джойстик, персонаж снова вернется к -90 в z-положении, и я пытаюсь понять, почему это происходит, и не допустить этого.
Я искал обучающие видеои некоторые сообщения здесь, но никто не ответил на мою проблему. Я также попытался удалить «-90f» в моей формуле Mathf.Atan2, но когда я это сделал, он поворачивается на 90 в z-положении меньше. Это означает, что когда я направляю джойстик прямо вниз, персонаж поворачивается вправо.
Вот мой код:
public class PlayerController : MonoBehaviour
{
public static PlayerController instance;
public Rigidbody2D rb;
public Joystick joystick;
private float moveSpeed = 2.5f;
Vector2 movement;
// Update is called once per frame
void Update()
{
movement.x = joystick.Horizontal;
movement.y = joystick.Vertical;
}
void FixedUpdate()
{
rb.MovePosition(rb.position + movement * moveSpeed * Time.fixedDeltaTime);
float angle = Mathf.Atan2(movement.y, movement.x) * Mathf.Rad2Deg - 90f;
transform.rotation = Quaternion.Euler(new Vector3(0f, 0f, angle));
}
Я ожидаю, что мой персонаж начнет с 0 в z-позициикогда игра начнется и персонаж останется и повернется к направлению джойстика, прежде чем его отпустить, вместо того, чтобы повернуть обратно в -90 в z-положении.