Сделать цилиндрическую точку объектом в Unity3d

StackOverflow https://stackoverflow.com/questions/7301682

  •  22-10-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

Существует ли причина, почему вы используете кватернионы, которые я бы использовал кватернионы. Углы.

То, что Даки сказал, верно, однако, если у вас возникли проблемы с кватернионами, я бы рекомендовал не использовать их, пока вы не получите лучшее понимание этих угловых наборов.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top