我正在制作一个游戏,玩家可以将平面对象旋转到任何方向或翻转它或其他任何东西
我还想在四个侧面上显示四个文本,以显示每个侧面的旋转量(请参阅图片以获得更好的主意)
这是用于旋转并显示旋转的代码
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,而不是向上旋转< / p>
那么不管y轴值如何,我如何显示每侧的旋转量?