я делаю игру, в которой игрок может вращать плоский объект в любом направлении или переворачивать его или что-либо еще
также я хочу иметь четыре текста на четырех сторонах, чтобы показать количество вращения на каждой стороне (см. рисунки для лучшей идеи)
и вот код, который я использую, чтобы повернуть его и показать поворот
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class main_code : MonoBehaviour
{
public Text show_right_rotation;
public Text show_left_rotation;
public Text show_up_rotation;
public Text show_down_rotation;
void Start()
{
}
void Update()
{
if ((int)transform.eulerAngles.z >= 180 && (int)transform.eulerAngles.z <= 360)
{
show_right_rotation.text = (360 - ((int)transform.eulerAngles.z)).ToString();
}
else if ((int)transform.eulerAngles.z <= 180 && (int)transform.eulerAngles.z >= 0)
{
show_left_rotation.text = ((int)transform.eulerAngles.z).ToString();
}
if ((int)transform.eulerAngles.x >= 0 && (int)transform.eulerAngles.x <= 90)
{
show_up_rotation.text = ((int)transform.eulerAngles.x).ToString();
}
else if ((int)transform.eulerAngles.x <= 360 && (int)transform.eulerAngles.x >= 270)
{
show_down_rotation.text = (360 - ((int)transform.eulerAngles.x)).ToString();
}
if (Input.GetKey(KeyCode.DownArrow))
{
transform.Rotate(new Vector3(-1, 0, 0), Space.World);
}
else if (Input.GetKey(KeyCode.UpArrow))
{
transform.Rotate(new Vector3(1, 0, 0), Space.World);
}
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.Rotate(new Vector3(0, 0, 1), Space.World);
}
else if (Input.GetKey(KeyCode.RightArrow))
{
transform.Rotate(new Vector3(0, 0, -1), Space.World);
}
if (Input.GetKey(KeyCode.Space))
{
transform.Rotate(new Vector3(0, 1, 0), Space.World);
}
}
}
сейчас, если я нажму вправострелка, в то время как ось y равна 0, плоскость будет вращаться правильно, и я могу использовать значения transform.eulerAngles, чтобы узнать поворот, в каком направлении, и значение поворота, как вы можете видеть, показывает, что квартира повернута на 72 градуса вправо

проблема в том, что если плоская ось y больше не равна 0, тогда значения transform.eulerAngles станут бесполезными, как вы можете видеть на изображении, которое показывает, что оно повернуто на 44 вправо и 33вверх, пока он не повернут вверх

, так как я могу показать величину поворота в каждую сторону независимо от значения оси y?