Unity3d: персонаж перестает двигаться после непродолжительного бездействия (AFK)

154
02 февраля 2020, 10:10

Персонаж перестает двигаться после непродолжительного бездействия (AFK). Всегда через какое-то время (около 3 минут) бездействия в игре, т.е когда уходишь в афк, то персонаж перестает двигаться. Он поворачивается в нужную сторону, анимация передвижения также присутствует, но персонаж стоит на месте. Я обычно делаю ALT + TAB, занимаюсь своими делами и когда возвращаюсь к игре - персонаж еле двигается либо вообще не двигается. Параметры rb.velocity остаются неизменными, тут всё ок, также как и input от джойстиков. Двигаю персонажа в каждом кадре, вот код передвижения:

// rb - это Rigidbody
// joystick - джойстик
rb.velocity = new Vector3(joystick.Horizontal * movementSpeed, rb.velocity.y, 
joystick.Vertical * movementSpeed);

Ссылка на видео демонстрацию - https://www.youtube.com/watch?v=gCiXeuT90_Y

Answer 1

Посмотрите, не получается ли такая ситуация, что персонаж немного "проваливается" в плоскость земли или террейна. Может быть просто collider персонажа заходит немного внутрь другого коллаидра и делает движение невозможным.

Причин на то может быть много, но для первого предположения, вы реализовали передвижение персонажа не совсем корректно. В документации по Rigitbody.Velocity написано, что изменение Velocity может приводить не реалистичному поведению физики и в большинстве случаев, не стоит менять значение этого свойства. Кроме того, не рекомендуют менять значение этого свойства на каждое обновление физики.

По конкретно вашему отрывку кода - вы меняете это свойство напрямую, а оно вычисляется по средствам воздействия различных сил на объект. Вполне возможно, что rb.velocity.y у вас имеет не нулевое значение, а какое-нибудь очень небольшое и со временем объект все-таки вростает в землю. Вы в свою очередь, каждое обновление физики не даете этому значению обнулиться. На вашем месте, я бы попробовать изменить движение на Rigidbody.AddForce, благо это не займет много времени.

READ ALSO
Entity Framework, добавить динамически новую таблицу

Entity Framework, добавить динамически новую таблицу

Имеется задача где необходимо во время выполнения создавать новую таблицу по запросу юзераТаблицу заранее предсказать нельзя, т

140
“Русская папка” пользователя

“Русская папка” пользователя

следующая строчка кода возвращает путь, который содержит "кириллицу"

139
Не запускается проект на ASP.NET Core

Не запускается проект на ASP.NET Core

Пишу в консоле dotnet buildВыдает ошибку

147