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

Меш персонажа улетает в небеса

СообщениеДобавлено: 24 дек 2019, 01:40
Llevellyn
Сегодня столкнулся с очень странным багом: я создаю клон персонажа, перевожу камеру и управление на клона, отворачиваюсь от оригинала, отбегаю метров на 50, поворачиваю камеру обратно, а оригинала нет! Точнее есть, но его коллайдер почему то находится на земле, а меш вместе с костями улетел метров на 100 вверх!

Изображение

Если нажать на паузу в редакторе, а потом снова плей, то меш может вернуться в коллайдер, а может и нет. Я также могу переключить камеру на оригинал персонажа и управлять им (то есть пустым коллайдером). Если создать несколько клонов и отбежать от них - то пока они находятся в зоне видимости камеры, с ними ничего не происходит, но как только отвернуться, то из части клонов точно также вылетает меш и висит над их коллайдером на рандомном расстоянии (может и в 2м над ним висеть). После нажатия-отжатия паузы меш части клонов может вернуться в коллайдер, а у части остаться висеть. Никакой закономерности я не нашел, юнити перезагружал, но баг никуда не делся. Когда он вообще появился - непонятно, за прошедший месяц делалось много всего и что именно повлияло - непонятно. В персонаже у меня есть несколько слоев и в отдельном слое рэгдолл, у которого все ригидбоди поставлены в isKinematic (до момента смерти персонажа). Может быть, кто-то сталкивался с таким багом? Поиском ничего подобного не нашел, да и что именно искать - непонятно.

Re: Меш персонажа улетает в небеса

СообщениеДобавлено: 24 дек 2019, 02:25
1max1
С анимацией посмотри что да как, попробуй отключить ее и посмотреть как будет себя вести игрок.

Re: Меш персонажа улетает в небеса

СообщениеДобавлено: 24 дек 2019, 03:07
Llevellyn
1max1 писал(а):С анимацией посмотри что да как, попробуй отключить ее и посмотреть как будет себя вести игрок.

В ходе опытов выяснилось следующее:
1. если на ходу отключить аниматор у моего персонажа, то меш начинает постепенно(с подергиваниями) вылетать вверх из коллайдера, причем независимо от того, какой аниматор в него поставить.
2. если поставить мой аниматор в стандартного юнитевского персонажа, то при его отключении меш никуда не девается, и вообще ничего необычного не происходит.
3. Если у всех персонажей при старте сцены у аниматора сделать culling mode - always animate, то меш перестает из них вылетать (вылетает только если отключить аниматор на ходу). Но я так понимаю, что это требовательно к ресурсам.
Вопрос - где искать косяк, и в чем он может быть?

Re: Меш персонажа улетает в небеса

СообщениеДобавлено: 24 дек 2019, 04:25
1max1
На меш только аниматор влияет? Нет больше никаких скриптов с изменениями позиции объекта?

Re: Меш персонажа улетает в небеса

СообщениеДобавлено: 24 дек 2019, 04:56
Llevellyn
1max1 писал(а):На меш только аниматор влияет? Нет больше никаких скриптов с изменениями позиции объекта?

на меш влияет только аниматор. Есть еще характер контроллер, но он влияет только на ригидбоди в корне персонажа, которое привязано к капсуле.

Re: Меш персонажа улетает в небеса

СообщениеДобавлено: 24 дек 2019, 09:33
Llevellyn
Похоже, к улетанию каким-то образом причастен навмеш агент. Если его включить, а потом отключить аниматор, то персонаж начинает улетать в небеса. Если поставить в навмеш агенте base offset отрицательный (хоть -0.01) то персонаж начинает проваливаться под землю. Что может быть не так с персонажем, если навмеш агент на него так действует?

Re: Меш персонажа улетает в небеса

СообщениеДобавлено: 24 дек 2019, 14:40
1max1
Что-то я не пойму, у тебя навмеш на объекте с мешем что-ли висит?

Re: Меш персонажа улетает в небеса

СообщениеДобавлено: 24 дек 2019, 15:37
Llevellyn
1max1 писал(а):Что-то я не пойму, у тебя навмеш на объекте с мешем что-ли висит?

когда я управляю персонажем, то на нем активируется характер контроллер, а навмеш агент и АИ контроллер отключаются. Когда переключаюсь на другого персонажа, то соответственно характер контроллер на первом отключается, а навмеш агент и АИ контроллер активируются, чтобы он действовал под управлением АИ.

Re: Меш персонажа улетает в небеса

СообщениеДобавлено: 24 дек 2019, 16:21
1max1
Покажи скриншот компонентов в инспекторе с навмешем и иерархию.

Re: Меш персонажа улетает в небеса

СообщениеДобавлено: 24 дек 2019, 22:27
Llevellyn
1max1 писал(а):Покажи скриншот компонентов в инспекторе с навмешем и иерархию.

https://sun9-55.userapi.com/c200320/v20 ... A3EWkQ.jpg

Re: Меш персонажа улетает в небеса

СообщениеДобавлено: 24 дек 2019, 22:46
1max1
Сложно сказать что именно не так, может быть в коде есть часть, которая напрямую управляет именно объектом с мешем, у тебя там много скриптов.
Если ты говоришь что улетает только меш, а родительский объект с коллайдером остается, то скорей всего навмеш тут не при чем.
Поищи по коду, может где-то участвует переменная baseOffset, раз уж она связана с этим.

Re: Меш персонажа улетает в небеса

СообщениеДобавлено: 08 янв 2020, 21:01
Llevellyn
Сегодня вновь попытался найти корень зла, но пока не нашел. Из новых наблюдений:
1. Чем дольше включена игра в редакторе, тем больше вероятность что меш персонажа улетит
2. Если отключить навмеш агент на персонаже, из которого улетел меш, то он может телепортироваться на десятки километров вниз или вверх

Re: Меш персонажа улетает в небеса

СообщениеДобавлено: 08 янв 2020, 21:45
Llevellyn
Через какое-то время в игре обнаружил, что у меня провалился под землю персонаж, на котором вообще ничего не было кроме аниматора и рэгдолла! При этом юнити считает, что персонаж все еще находится на земле (Y=0 в трансформе). Может это версия юнити глючная?
https://sun9-1.userapi.com/c200424/v200 ... rN4lQg.jpg
https://sun9-53.userapi.com/c200424/v20 ... cJ0oqE.jpg
в скрипте die написано вот что:

public class die : MonoBehaviour {
public RuntimeAnimatorController an;
void Update () {
if (Input.GetKeyDown(KeyCode.Y)){
gameObject.GetComponent<Animator> ().runtimeAnimatorController = null;
}
if (Input.GetKeyDown(KeyCode.U)){
gameObject.GetComponent<Animator> ().runtimeAnimatorController = an;
}
}
}

при этом никаких кнопок я не нажимал. Если нажать кнопку Y, то персонаж может с разной вероятностью остаться на месте, провалиться под землю, улететь в небеса или с ним случится что-то подобное:
Изображение

Re: Меш персонажа улетает в небеса

СообщениеДобавлено: 17 янв 2020, 03:02
Llevellyn
В общем последний глюк связан с тем, что при создании рэгдолла на его ригидбоди не поставились галочки isKinematic