Определить, когда ось находится в некоторой точке - PullRequest
0 голосов
/ 06 апреля 2020

Я делаю игру, в которой дверь поворачивается на 90 градусов. Когда дверь вращается, я хочу, чтобы что-то происходило, когда transform.rotation (0, 0, 30), поэтому, в основном, когда она повернулась на 30 градусов по оси z. Я попробовал кое-что, но вот как я дошел до этого.

public GameObject door;

private void Update()
    {
       if(door.transform.rotation.z == 30)
        {
            ///Do something
        }
    }

Как я уже говорил ранее, я хочу, чтобы что-то случилось, когда дверь повернулась на 30 градусов.

Ничего не происходит, когда я использую этот код.

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

1) transform.rotation не использует градус, используйте eulerAngles.

2) когда вы хотите сравнить значения с плавающей запятой, они никогда не равны (приблизительные значения), поэтому вы можете проверить, принадлежит ли значение интервал (или используйте Mathf. Приблизительно, но это то же самое):

   if(door.transform.eulerAngles.z > 29 && door.transform.eulerAngles.z < 31)
    {
        ///Do something
    }
0 голосов
/ 06 апреля 2020

Вы можете попробовать вывести «door.transform.rotation.z», чтобы увидеть, что это за значение. Вероятно, это между 0,0 и 1,0

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