Страница 1 из 1

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

СообщениеДобавлено: 10 май 2023, 20:17
Zimaell
дело касается поворота кости в нужном направлении, это направление задаётся другим объектом, в скелете не применяется анимация, то есть это просто набор объектов.

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

прилагаю скрипт.
Синтаксис:
Используется 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

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

СообщениеДобавлено: 11 май 2023, 00:29
Alkos26Rus
Поиграйся с офсетом, т.к оси у костей хз какие могут быть. +-90 по разным осям попробуй

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

СообщениеДобавлено: 11 май 2023, 08:04
Zimaell
Alkos26Rus писал(а):Поиграйся с офсетом, т.к оси у костей хз какие могут быть. +-90 по разным осям попробуй

так в этом и дело что никак не пойму как его правильно выставить, теоретически нужно запомнить начальное смешение осей и потом применять при сдвиге (сдвиг + оффсет), а на практике не получается, как не крутил не понимаю...

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

СообщениеДобавлено: 11 май 2023, 12:44
Alkos26Rus
Синтаксис:
Используется csharp
RightUpperLeg.rotation = Quaternion.Euler(lookRotation.eulerAngels + new Vector3(90, 0, 0) );

Как то так помойму, от руки написал, не помню уже точно. Твой initialRotation лучше вобще не юзать, тем более он глобальный, повернешь объект и будет некорректно