сделать цилиндр точечным объектом в unity3d - PullRequest
1 голос
/ 04 сентября 2011

Я только начинаю изучать среду разработки игр Unity3D.Я пытаюсь сделать так, чтобы цилиндр "указывал" на другой объект при нажатии какой-либо клавиши.

public GameObject target;
void Update () {
    if (Input.GetKeyDown(KeyCode.A)) {
        ???
    }
}

Я знаю, что мне нужно использовать положение цели и цилиндра, чтобы изменить вращение цилиндра, но я могуНе понимаю, как, я не думаю, что я еще понимаю, что это за кватернионы.

Я бы очень признателен за любую помощь!Спасибо,
Мануэль

Ответы [ 2 ]

2 голосов
/ 05 сентября 2011

Во-первых, ваш цилиндр нуждается в некотором понятии «вперед» или в его «направлении наведения» (мои слова) в локальном пространстве цилиндра.Для этого вы можете предположить (или визуально увидеть) либо + X, + Y, + Z, -X, -Y или -Z;или вы можете указать собственный произвольный вектор, указывающий в каком-то другом направлении.

Во-вторых, вам нужен вектор, который указывает от центра вашего цилиндра к центру другого объекта (вы уже упоминали об этом).

Теперь вы можете использовать Unity's Quaternion.FromToRotation(...), чтобы сгенерировать кватернион, который, применительно к вращению мира вашего цилиндра, будет поворачивать направление наведения в направлении вашего другого объекта.Готово.

Обратите внимание, что если ваш цилиндр больше пары трансформируется вглубь, вам, возможно, придется немного изменить механику этого подхода, чтобы, возможно, учесть преобразования родителей.

0 голосов
/ 05 апреля 2012

Есть ли причина, по которой вы используете кватернионы, я бы использовал кватернионы. Углы углов, которые представляют кватернионы как вектор 3. Именно так мы обычно понимаем углы.у меня проблемы с кватернионами, я бы рекомендовал не использовать их, пока у вас не будет лучшего понимания этих наборов углов.

надеюсь, это поможет

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