В единстве, как сделать верхнюю или нижнюю грань цилиндра по умолчанию вперед определенной целевой позицией - PullRequest
0 голосов
/ 20 октября 2018

вот мой код:

[ExecuteInEditMode]
public class TestCylinderLookAt : MonoBehaviourExt
{
    private GameObject target;

    void Start()
    {
        target = GameObject.Find("TargetSphere");
    }

    // Update is called once per frame
    void Update()
    {
        transform.LookAt(target.transform.position);
    }
}
#endif

и вот моя попытка:

enter image description here

Я не ожидаю цилиндрсторона вперед, я ожидаю верхнюю или нижнюю сторону цилиндра, как мне поступить?

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

У вас есть два варианта:

Вариант 1: сделать свой собственный цилиндр

Если вы моделируете свой собственный цилиндр, вы можете ориентировать ось Z так, как вам нравится.

Вариант 2: Воспроизведение

Создайте пустой игровой объект как дочерний элемент цилиндра, установите его положение на (0,0,0), затем измените порядок иерархии так, чтобы пустой объект стал теперь родителем цилиндра.Поверните цилиндр так, чтобы его верхняя часть была обращена к оси Z его родителя.

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

0 голосов
/ 20 октября 2018

После выполнения операции LookAt () вы можете применить локальное вращение на 90 градусов в вашем цилиндре, как показано ниже:

void Update()
{
    transform.LookAt(target.transform.position);
    transform.Rotate(90, 0, 0, Space.Self);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...