34 / 11 / 6
Регистрация: 09.01.2018
Сообщений: 182
1

Вращение другой оси объекта для LookAt возможно?

23.02.2020, 18:53. Показов 5014. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1)
Нужно повернуть объект, предположим капсулу, ее верхушкой в сторону клика мышкой на плоскости. Можно ли это как-то сделать с помощью transform.LookAt - то есть без дополнительного вычисления углов? Лучшее что получилось сделать это указать что-то типа CurrentObject.transform.LookAt(hit.point,CurrentObject.transform.forward); (где hit это Raycast Hit на плоскости) но все равно в точку смотрит синяя ось.

Я наверное могу придумать другой способ, добавить 90 градусов и т.п. Но хочется разобраться что я упускаю? Можно ли сделать так что "голова" капсулы разворачивалась в сторону точки с помощью LookAt?
https://i.gyazo.com/1b0422ecfc... b87def.png



2)
По-умолчанию у меня создаются 3Д объекты с замыслом что высота это ось Y. А мне достаточно использовать две координаты. Привычнее использовать X, Y. Если я разверну всё, камеру и т.п., чтобы представлять координаты на плоскости с помощь X и Y, а чтобы Z всегда был 0, какие подводные камни меня могут ждать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.02.2020, 18:53
Ответы с готовыми решениями:

Вращение объекта по оси Z
Добрый вечер, Guru Unity, Подскажите, как сделать вращение объекта вокруг своей оси Z с зажатой...

Вращение объекта по оси Z джойстиком (2D)
Приветствую обитателей форума! Появилась необходимость в реализации функции вращения по оси Z....

Вращение объекта вокруг определённой оси
Приветствую, форумчане. Ситуация: есть самолёт с подвижными органами управления (элероны, руль...

Вращение объекта во время движения по оси Z
Здравствуйте. Начал недавно заниматься unity. У меня на сцене объект движется от одной сферы к...

7
Эксперт .NETАвтор FAQ
10377 / 5108 / 1824
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
23.02.2020, 21:54 2
Цитата Сообщение от ezd Посмотреть сообщение
CurrentObject.transform.LookAt(hit.point,CurrentObject.transform.forward);
Второй аргумент метода LookAt это направление вверх.
Поэтому правильно вызывать:
C#
1
CurrentObject.transform.LookAt(hit.point, Vector3.up);
Цитата Сообщение от ezd Посмотреть сообщение
Привычнее использовать X, Y. Если я разверну всё, камеру и т.п., чтобы представлять координаты на плоскости с помощь X и Y, а чтобы Z всегда был 0, какие подводные камни меня могут ждать?
Лучше этого не делать. Привыкайте использовать координаты X,Z.
0
34 / 11 / 6
Регистрация: 09.01.2018
Сообщений: 182
23.02.2020, 22:43  [ТС] 3
Цитата Сообщение от Storm23 Посмотреть сообщение
Второй аргумент метода LookAt это направление вверх.
Поэтому правильно вызывать:
Ну да, в документации написано, что по-умолчанию UP, но можно и другой вектор. Я пытаюсь разобраться с этими вращениями, но никак что-то картина не складывается. Вот как в данном случае повернуть в одно действие? Это возможно?

C#
1
2
CurrentObject.transform.LookAt(hit.point);
CurrentObject.transform.Rotate(90,0,0);
Вот такой код разворачивает ее правильно. Но я хочу в одно действие. Это возможно?

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

Кстати, по ним тоже вопрос возник. Есть функция:
C#
1
CurrentObject.transform.rotation=Quaternion.Slerp(CurrentObject.transform.rotation,final_postion,X);
Эта функция, насколько я понимаю, чем ближе к цели, тем медленнее двигается. Как можно узнать что уже сейчас она уже почти достигла цели чтобы остановить цикл и тупо присвоить final_position? Как сравнить эти квартенионы?
0
294 / 216 / 85
Регистрация: 17.02.2016
Сообщений: 1,275
Записей в блоге: 1
24.02.2020, 00:15 4
Цитата Сообщение от ezd Посмотреть сообщение
чем ближе к цели, тем медленнее двигается
нужно нормализовать
возбми в (скобки и ).normalize;
0
34 / 11 / 6
Регистрация: 09.01.2018
Сообщений: 182
24.02.2020, 11:38  [ТС] 5
Цитата Сообщение от Steroid Посмотреть сообщение
нужно нормализовать
возбми в (скобки и ).normalize;
Не понял, а как это поможет сравнить?
0
294 / 216 / 85
Регистрация: 17.02.2016
Сообщений: 1,275
Записей в блоге: 1
24.02.2020, 17:44 6
Цитата Сообщение от ezd Посмотреть сообщение
а как это поможет сравнить?
сравнить что?
0
34 / 11 / 6
Регистрация: 09.01.2018
Сообщений: 182
24.02.2020, 19:02  [ТС] 7
Цитата Сообщение от Steroid Посмотреть сообщение
сравнить что?
Два кватерниона чтобы определить что метод уже близко подошел ко второму параметру. Оно же из первого параметра вращается во второй параметр, нет?
0
34 / 11 / 6
Регистрация: 09.01.2018
Сообщений: 182
29.02.2020, 21:44  [ТС] 8
1) Так-с, видимо никто не знает можно ли так развернуть объект :/

Ок. А можно как-то поменять привязку самого объекта к осям, чтобы X указывал на округлую часть? Я могу придумать способ, например вложить этот цилиндр в пустой объект и развернуть его уже внутри пустого объекта и скрипты уже навешивать на него. Но можно ли без вложения в пустой объект это сделать?

2) И чтобы два раза не вставать. Есть какой-то хороший мануал по работает с Canvas который бы подробно рассматривал все детали? Потому что я вроде делаю по гайдам, но постоянно наступаю на грабли, то что-то размытое, то слишком мелкое, потому что не пишут как импортировать спрайты, а нужно ли их внутри Image запихивать, какие scale выбирать и т.п. То есть большинство материалов в интернете не до конца освещают детали, из-за чего любой шаг в сторону и наступаешь на грабли. Нужно больше подробностей.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.02.2020, 21:44
Помогаю со студенческими работами здесь

Вращение объекта вокруг своей оси
Здравствуйте я полный новичок в unity3d, недавно столкнулся с такой проблемой, буду рад если...

Вращение камеры по оси Х
Доброго времени суток у меня такая проблема , нужно сделать камера контроллер , перемещение...

Вращение объекта вокруг другого объекта
Как сделать вращение объекта вокруг другого объекта? Например: создаём куб, затем внутри него...

Вращение объекта вокруг своей оси
Задаю вопрос впервые, так что попрошу не придираться к возможным ошибкам/недостатку инфы. Начал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru