как узнать направление вращения - PullRequest
0 голосов
/ 08 февраля 2019

я делаю игру, в которой игрок может вращать плоский объект в любом направлении или переворачивать его или что-либо еще

также я хочу иметь четыре текста на четырех сторонах, чтобы показать количество вращения на каждой стороне (см. рисунки для лучшей идеи)

idea about the game

и вот код, который я использую, чтобы повернуть его и показать поворот

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 градуса вправо

the correct result

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

the wrong result

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...