FirstPersonController анимация рук при вращении камеры

Общие вопросы о Unity3D

FirstPersonController анимация рук при вращении камеры

Сообщение DDDENISSS 17 ноя 2013, 23:07

Как обычно удочерил камере модель рук с пистолетом. Но так кажется, что модель не 3х мерная, а просто картинка.
При ходьбе я так понял просто включается анимация. Хотя лучше это процедурной анимацией сделать.
А при повороте камеры руки как бы немного отстают от камеры. Т.е. если камера поворачивается вправо, то руки смещаются или поворачиваются немного влево.
Пробовал так сделать
Синтаксис:
Используется csharp
float dx = Input.GetAxis("Mouse X") / Time.deltaTime;
transform.localPosition = defaultPosition + Vector3.right * dx/10000f;
 

Но руки очень сильно дрожали.
Вообщем кто-то такое делал? Как это делается?
Аватара пользователя
DDDENISSS
UNIверсал
 
Сообщения: 439
Зарегистрирован: 11 сен 2011, 20:33

Re: FirstPersonController анимация рук при вращении камеры

Сообщение IDoNotExist 18 ноя 2013, 09:22

Способов есть много, можно использовать инверсную кинематику например, если хотите просто вращать руки вокруг оси, то не удочеряйте их камере, сделайте отдельно и плавно доворачивайте в зависимости от поворота камеры.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: FirstPersonController анимация рук при вращении камеры

Сообщение DDDENISSS 18 ноя 2013, 18:30

Вот как раз так "не удочерять их камере" не хочется.
Я видел примеры, в которых игрок, камера и руки были вообще не связаны и удочерялись одной пустышке, которая в игре не двигалась т.е. просто чтобы в иерархии не мешались. Не нравится мне такое.
Сейчас написал так:
Синтаксис:
Используется csharp
smoothRotation = Quaternion.Slerp( smoothRotation, transform.parent.rotation, Time.deltaTime*10 );
Vector3 p1 = transform.parent.rotation * Vector3.forward;
Vector3 p2 = smoothRotation * Vector3.forward;
Vector3 delta = p2 - p1;
transform.localPosition = defaultPosition - delta/50f;

transform.parent.rotation - камера.
Не плохо получилось.
Аватара пользователя
DDDENISSS
UNIверсал
 
Сообщения: 439
Зарегистрирован: 11 сен 2011, 20:33

Re: FirstPersonController анимация рук при вращении камеры

Сообщение IDoNotExist 18 ноя 2013, 18:58

DDDENISSS писал(а):Вот как раз так "не удочерять их камере" не хочется.
Я видел примеры, в которых игрок, камера и руки были вообще не связаны и удочерялись одной пустышке, которая в игре не двигалась т.е. просто чтобы в иерархии не мешались. Не нравится мне такое.

И что в этом ужасного))? Это как раз логически правильно (в жизни у вас же руки не приклеены к голове) следовательно легко реализуемо, да и чуть чуть более выгоднее по производительности, потому что в случае удочерения у вас сначала поворачивается 2 объекта (камера и дочерний) а потом вы дочерний еще и отворачиваете от камеры. В общем делайте как хотите, мое дело посоветовать, ваше отказаться )).
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: FirstPersonController анимация рук при вращении камеры

Сообщение artk 18 ноя 2013, 19:40

Руки надо рендерить второй камерой, а не основной.
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

Re: FirstPersonController анимация рук при вращении камеры

Сообщение DDDENISSS 19 ноя 2013, 01:10

artk, в одном примере, кстати, руки и вторая камера даже не поворачивались вверх\вниз :-? . Можно их вообще не двигать и не поворачивать, но освещаться они будут не правильно. Вообще я знаю про вторую камеру, но пока и без нее все работает. Руки у меня как-то получились меньше коллайдера персонажа. Так что в стены не войдут. Впрочем вопрос был не об этом.
IDoNotExist, не нравится когда рутовый объект это не сам Character, а пустышка торчащая постоянно в одном месте и объединяющая коллайдер, камеру, руки.
Аватара пользователя
DDDENISSS
UNIверсал
 
Сообщения: 439
Зарегистрирован: 11 сен 2011, 20:33


Вернуться в Общие вопросы

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

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