Как привязывать руки к оружию?

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

Как привязывать руки к оружию?

Сообщение Zimaell 15 сен 2022, 17:25

Занимаюсь вот анимацией и подошел к вопросу - как привязать оружие к рукам, я понимаю что это связано с IK, но никак не могу понять с чего начать.
Во первых что у меня имеется, персонаж бегает во все стороны по типу topdown, бегает в стороны по нажатию WASD а целится туда куда мышкой указываю, персонаж бегает как нужно и поворачивается в сторону курсора.
Что я сделал - привязал автомат к правой руке, при прицеливании смотрит не туда куда нужно, получается нужно автомату смотреть в сторону курсора, но тогда как руки к нему привязать...
В общем не пойму что ведомое а что ведущее, что куда должно крепиться и что куда должно смотреть.
Подскажите что да как?
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: Как привязывать руки к оружию?

Сообщение Saltant 16 сен 2022, 03:46

На ютубе есть куча видосов по IK в чем проблема?
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2234
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Re: Как привязывать руки к оружию?

Сообщение NOVA 16 сен 2022, 19:45

Досконально не помню как делал.




Но так то всё правильно. Вроде оружие цеплять к правой руке, а левую IK на цевьё.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Как привязывать руки к оружию?

Сообщение Zimaell 16 сен 2022, 19:51

NOVA писал(а):Досконально не помню как делал.
Но так то всё правильно. Вроде оружие цеплять к правой руке, а левую IK на цевьё.

У меня немного другая ситуация, TopDown, сам прицел это 3D курсор, вот сделал что-то подобное
Синтаксис:
Используется csharp
private void Update(){
  leftHand.position = WeaponLeftHandler.position; // WeaponLeftHandler точка на оружии к которой крепится рука
  leftHand.rotation = WeaponLeftHandler.rotation; // leftHand пустышка на персонаже
  }
   
private void OnAnimatorIK(){
  anim.SetLookAtWeight(1f, 1f, 1f);
  anim.SetLookAtPosition(Target); // Tagret курсор в который должен целиться, по сути туда должно смотреть дуло
  anim.SetIKPositionWeight(AvatarIKGoal.LeftHand, 1);
  anim.SetIKRotationWeight(AvatarIKGoal.LeftHand, 1);  
  anim.SetIKPosition(AvatarIKGoal.LeftHand, leftHand.position);
  anim.SetIKRotation(AvatarIKGoal.LeftHand, leftHand.rotation);

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

и да, оружие прицепил к правой руке, IK к левой...
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: Как привязывать руки к оружию?

Сообщение NOVA 16 сен 2022, 20:02

Ну вообще не помню, я такими методами и не пользовался 5 лет назад. Оружие входит в состав Меканим? У меня вроде было отдельным объектом. Оси пивота соответствуют? Где модели вообще делались. Пивот. Центр тяжести ствола должен находится именно в центре ладони правой руки. Вектор длины ствола должен быть направлен на курсор. Левая рука на цевье. Проверьте все эти вещи. Кажется вспоминаю, да. Дробовик не входил в состав скелета Mecanim.
Вроде так. Оружие отдельный объект. Цепляем за правую руку. Направляем на цель. Цепляем левую руку за цевьё. Делаем переходы.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Как привязывать руки к оружию?

Сообщение Zimaell 16 сен 2022, 20:27

NOVA писал(а):Ну вообще не помню, я такими методами и не пользовался 5 лет назад. Оружие входит в состав Меканим? У меня вроде было отдельным объектом. Оси пивота соответствуют? Где модели вообще делались. Пивот. Центр тяжести ствола должен находится именно в центре ладони правой руки. Вектор длины ствола должен быть направлен на курсор. Левая рука на цевье. Проверьте все эти вещи. Кажется вспоминаю, да. Дробовик не входил в состав скелета Mecanim.
Вроде так. Оружие отдельный объект. Цепляем за правую руку. Направляем на цель. Цепляем левую руку за цевьё.

да оружие отдельные объект, да и всё вроде как вы описали, то вот "направляем на цель" вот тут проблемка, пивот по уроку у меня в плече правом, ну то такое, главное чтобы "куда" целился, вот тут я и не пойму этого вектора.
Я так понимаю линия должна проходить
от
Синтаксис:
Используется csharp
anim.SetIKPosition(AvatarIKGoal.LeftHand, LeftHand.position);

до
Синтаксис:
Используется csharp
anim.SetLookAtPosition(Target);

так?
но я сделал дебаг
Синтаксис:
Используется csharp
Debug.DrawRay(LeftHand.position, Target, Color.green);

и у меня начальная точка на левой руке а вот конечная точка куда-то в непонятном направлении вверх улетает, вот и не пойму почему не в сторону курсора...
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: Как привязывать руки к оружию?

Сообщение Zimaell 16 сен 2022, 20:34

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

Re: Как привязывать руки к оружию?

Сообщение Zimaell 16 сен 2022, 20:39

ради принципа провёл следующий тест
Синтаксис:
Используется csharp
Debug.DrawRay(Vector3.zero, Target, Color.blue);

всё как и задумано, из центра луч всегда до курсора...
а с прицелом что не так не пойму...
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: Как привязывать руки к оружию?

Сообщение NOVA 16 сен 2022, 20:46

Я думаю, чот Вы там накосячили. Отцепите ствол и просто направьте на цель из камеры. И кстати про камеру не забывайте. Она тоже должна туда смотреть. Прям параллельно стволу. Работайте сами. Я просто на мысли навожу. В код даже не вчитывался. Отцепитесь от меканим сначала, проверьте. Как бы если объект нормально наводится, если он не дочка объекта, то и дочкой объекта он будет нормально наводится. Там останется только левую руку прицепить. Где-то косяк в коде. А с утра в субботу косяки в коде находятся в 4 раза быстрее чем в пятницу вечером.
Тут ещё это. родительские объекты любят отдавать свои координаты вращения дочерним. Поэтому никаких парент. Только трансформпозишн и лукат.
Аватара пользователя
NOVA
Адепт
 
Сообщения: 1741
Зарегистрирован: 17 май 2011, 11:45
Откуда: Дядя Саша from Mother Russia

Re: Как привязывать руки к оружию?

Сообщение Zimaell 16 сен 2022, 21:05

NOVA писал(а):Я думаю, чот Вы там накосячили. Отцепите ствол и просто направьте на цель из камеры. И кстати про камеру не забывайте. Она тоже должна туда смотреть. Прям параллельно стволу. Работайте сами. Я просто на мысли навожу. В код даже не вчитывался. Отцепитесь от меканим сначала, проверьте. Как бы если объект нормально наводится, если он не дочка объекта, то и дочкой объекта он будет нормально наводится. Там останется только левую руку прицепить. Где-то косяк в коде. А с утра в субботу косяки в коде находятся в 4 раза быстрее чем в пятницу вечером.
Тут ещё это. родительские объекты любят отдавать свои координаты вращения дочерним. Поэтому никаких парент. Только трансформпозишн и лукат.

конечно где-то накосячил, иначе работало бы как хотелось бы...
на счёт камеры - у меня нет привязки к камере так как TopDown, то есть камера статически смотрит сверху.
отдельно пушка смотрит на курсор, а когда прицеплена к персонажу то вот такое...
что ж буду искать методом тыка...
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: Как привязывать руки к оружию?

Сообщение Alkos26Rus 16 сен 2022, 21:42

Zimaell писал(а):ради принципа провёл следующий тест
Синтаксис:
Используется csharp
Debug.DrawRay(Vector3.zero, Target, Color.blue);

всё как и задумано, из центра луч всегда до курсора...
а с прицелом что не так не пойму...

Не правильно DrawRay пользуешь, сначала позиция затем направление, а у тебя 2 позиции
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Как привязывать руки к оружию?

Сообщение Zimaell 17 сен 2022, 11:20

Alkos26Rus писал(а):
Zimaell писал(а):ради принципа провёл следующий тест
Синтаксис:
Используется csharp
Debug.DrawRay(Vector3.zero, Target, Color.blue);

всё как и задумано, из центра луч всегда до курсора...
а с прицелом что не так не пойму...

Не правильно DrawRay пользуешь, сначала позиция затем направление, а у тебя 2 позиции

не понял, вот провёл 2 вектора
Синтаксис:
Используется csharp
Debug.DrawRay(Vector3.zero, Target.position, Color.green);
Debug.DrawRay(WeaponAim.position, Target.position, Color.red);

а в коде оружия так
Синтаксис:
Используется csharp
WeaponAim.LookAt(Target);

вот что получилось
https://ibb.co/q0zYLqj
в теории две линии должны приходить в таргет, что не так то?
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: Как привязывать руки к оружию?

Сообщение Alkos26Rus 17 сен 2022, 13:47

Синтаксис:
Используется csharp
Vector3 dir = Target.position - WeaponAim.position;
Debug.DrawRay(WeaponAim.position, dir);
 
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1640
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Как привязывать руки к оружию?

Сообщение Zimaell 17 сен 2022, 16:16

Alkos26Rus писал(а):
Синтаксис:
Используется csharp
Vector3 dir = Target.position - WeaponAim.position;
Debug.DrawRay(WeaponAim.position, dir);
 

хм, луч смотрит туда куда нужно, а именно из левой руки и в цель, но сам персонаж и автомат смотрит в другую сторону, может не туда я креплю, никак не могу понять как оно должно работать...
какая точка должна быть направляющей? левая рука? Или что?
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: Как привязывать руки к оружию?

Сообщение Saltant 17 сен 2022, 16:21

Оружие должно быть в контейнере (отдельный геймобжект), луч должен стрелять из ствола оружия соответственно.
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2234
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

След.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18