NavMeshAgent и анимации с RootMotion

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

NavMeshAgent и анимации с RootMotion

Сообщение NapalmRain 09 апр 2016, 07:01

Доброго всем времени суток!

Вопрос такого плана: есть у меня набор анимаций, подготовленных для персонажа, анимации с передвижением за счёт рутовой кости.
Решил я из болванки персонажа, уже настроенной, сделать болванку НПС.

Повесил на него NavMeshAgent, в скрипте управления задал ему направление, скорость установил на 0 а в анимацию передаю, что нужно идти.
И он идёт куда глаза глядят не поворачивает в нужном направлении. Поворачивать начинает только при установке скорости минимум на 0.05, но это уже визуально заметно, ведь модель передвигается анимацией и дополнительно скользит.

Возможно ли каким-то образом заставить работать вместе такой тип анимации и NavMeshAgent? Как-то брать от агента только информацию о том, куда идти, а идти уж самостоятельно?

Заранее благодарю за ответ!
NapalmRain
UNIт
 
Сообщения: 81
Зарегистрирован: 24 янв 2014, 15:58

Re: NavMeshAgent и анимации с RootMotion

Сообщение IDoNotExist 09 апр 2016, 10:29

NapalmRain писал(а):Как-то брать от агента только информацию о том, куда идти, а идти уж самостоятельно?

NavMeshAgent.desiredVelocity
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: NavMeshAgent и анимации с RootMotion

Сообщение NapalmRain 10 апр 2016, 10:48

IDoNotExist писал(а):NavMeshAgent.desiredVelocity

Благодарю! В целом получилось, правда скорость на агенте всё равно должна быть не нулевой, но можно поставить столь незначительную, что будет неважно.

Обратил внимание, что если открыть вкладку Navigation в момент запуска игр, в окне сцены рисуется дебаг линии маршрутов. То есть чисто теоретически весь маршрут известен заранее, Нет ли каких-то методов получить массив точек, к примеру этого маршрута? Мне просто для себя интересно.
NapalmRain
UNIт
 
Сообщения: 81
Зарегистрирован: 24 янв 2014, 15:58

Re: NavMeshAgent и анимации с RootMotion

Сообщение alt3d 10 апр 2016, 12:40

NavMeshPath.corners

Почитайте уже справку по NavMesh-у :)
http://docs.unity3d.com/ScriptReference/NavMesh.html
alt3d
Старожил
 
Сообщения: 687
Зарегистрирован: 04 сен 2011, 21:19
  • Сайт
  • ICQ

Re: NavMeshAgent и анимации с RootMotion

Сообщение NapalmRain 10 апр 2016, 13:54

alt3d писал(а):NavMeshPath.corners

Почитайте уже справку по NavMesh-у :)
http://docs.unity3d.com/ScriptReference/NavMesh.html

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

В любом случае спасибо!
NapalmRain
UNIт
 
Сообщения: 81
Зарегистрирован: 24 янв 2014, 15:58

Re: NavMeshAgent и анимации с RootMotion

Сообщение DeHHu 10 апр 2016, 15:13

NapalmRain писал(а):
alt3d писал(а):NavMeshPath.corners

Почитайте уже справку по NavMesh-у :)
http://docs.unity3d.com/ScriptReference/NavMesh.html

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

В любом случае спасибо!


Если посчитать путь вручную, то у пути будет поле corners.
http://docs.unity3d.com/ScriptReference ... hPath.html
DeHHu
UNец
 
Сообщения: 41
Зарегистрирован: 22 янв 2012, 11:32
Skype: dehhhu

Re: NavMeshAgent и анимации с RootMotion

Сообщение MaxBorn 12 фев 2019, 22:03

IDoNotExist писал(а):
NapalmRain писал(а):Как-то брать от агента только информацию о том, куда идти, а идти уж самостоятельно?

NavMeshAgent.desiredVelocity

Тема 16-го года, но я уже чтоб новую не открывать по одному и тому же вопросу сюда попробую написать)
Дальше нужно вращать бота к позиции desiredVelocity?
Я делаю так: transform.LookAt(new Vector3(agent.desiredVelocity.x, transform.position.y, agent.desiredVelocity.z));
Не выходит. Прописал Debug.Log(agent.desiredVelocity); что бы посмотреть на координаты в консоле во время игры, они не логичные какие-то.
Как достичь нужного результата?
MaxBorn
UNец
 
Сообщения: 38
Зарегистрирован: 08 фев 2018, 17:56

Re: NavMeshAgent и анимации с RootMotion

Сообщение Cr0c 13 фев 2019, 00:12

Синтаксис:
Используется csharp
private void OnAnimatorMove() {
 actor.position = animator.rootPosition;
 actor.rotation = animator.rootRotation;
}

для перемещения и поворота костью
Я и агента использовал только для расчета пути, а потом уже двигал анимацией по точкам пути, а перед этим ещё и точки отодвигал наружу от углов
Синтаксис:
Используется csharp
path.AddRange(agentPath.corners);
path2.AddRange(path);
if (path.Count > 2)
 for (int i = 1; i < path.Count - 1; i++) {
  var help = path[i] - path[i - 1];
  var help2 = path[i + 1] - path[i - 1];
  var diff = Vector3.Cross(help2, Vector3.up).normalized * agent.radius * 0.5f;
  path2[i] += diff * Mathf.Sign(Vector3.Dot(diff, help));
 }
else
 if (path2.Count == 0)
  path2.Add(agent.destination);
 
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: NavMeshAgent и анимации с RootMotion

Сообщение MaxBorn 13 фев 2019, 15:56

Cr0c писал(а):для перемещения и поворота костью
Я и агента использовал только для расчета пути, а потом уже двигал анимацией по точкам пути, а перед этим ещё и точки отодвигал наружу от углов

Спасибо за ответ) Но, честно говоря, я ничего не смог вынести из вашего кода(
Мне просто нужно что бы бот поворачивался лицом к ближайшей точке его маршрута. Так же как и с помощью nav mash agent-а. Как можно узнать мировые координаты ближайшей точки маршрута?
MaxBorn
UNец
 
Сообщения: 38
Зарегистрирован: 08 фев 2018, 17:56

Re: NavMeshAgent и анимации с RootMotion

Сообщение Cr0c 13 фев 2019, 16:02

MaxBorn писал(а):Как можно узнать мировые координаты ближайшей точки маршрута?

Первая строка примера agentPath.corners
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: NavMeshAgent и анимации с RootMotion

Сообщение MaxBorn 13 фев 2019, 16:37

Cr0c писал(а):
MaxBorn писал(а):Как можно узнать мировые координаты ближайшей точки маршрута?

Первая строка примера agentPath.corners

Теперь все шикарно)) Благодарю)
MaxBorn
UNец
 
Сообщения: 38
Зарегистрирован: 08 фев 2018, 17:56


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

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

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