как установить объект в направлении другого?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

как установить объект в направлении другого?

Сообщение Zimaell 10 май 2023, 20:17

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

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

прилагаю скрипт.
Синтаксис:
Используется csharp
public Transform RightUpperLeg;
public Transform RightLowerLeg;
public Transform PoleRightKnee;
private Quaternion initialRotation;
private Quaternion lookRotation;
 
private void Awake(){
   PoleRightKnee.position = RightLowerLeg.position;
   initialRotation = RightUpperLeg.rotation;
   }
 
private void Update(){
   lookRotation = Quaternion.LookRotation(PoleRightKnee.position - RightUpperLeg.position);
   RightUpperLeg.rotation = lookRotation * initialRotation;
   }

и видео
https://youtu.be/QAQl_7jjXnc
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: как установить объект в направлении другого?

Сообщение Alkos26Rus 11 май 2023, 00:29

Поиграйся с офсетом, т.к оси у костей хз какие могут быть. +-90 по разным осям попробуй
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: как установить объект в направлении другого?

Сообщение Zimaell 11 май 2023, 08:04

Alkos26Rus писал(а):Поиграйся с офсетом, т.к оси у костей хз какие могут быть. +-90 по разным осям попробуй

так в этом и дело что никак не пойму как его правильно выставить, теоретически нужно запомнить начальное смешение осей и потом применять при сдвиге (сдвиг + оффсет), а на практике не получается, как не крутил не понимаю...
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: как установить объект в направлении другого?

Сообщение Alkos26Rus 11 май 2023, 12:44

Синтаксис:
Используется csharp
RightUpperLeg.rotation = Quaternion.Euler(lookRotation.eulerAngels + new Vector3(90, 0, 0) );

Как то так помойму, от руки написал, не помню уже точно. Твой initialRotation лучше вобще не юзать, тем более он глобальный, повернешь объект и будет некорректно
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 20