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

Re: (Проблема) движение на движущемся объекте

СообщениеДобавлено: 17 авг 2010, 22:46
Garu
тут в общем подходе по ходу геморой, но то что натыкал прикидывая по бумажке, должно дать еще более худшие результаты.
методом "Если гора не идет к Магомеду, значит Vector3 прописан хреново" убрал ступени и заменил телепортами, пусть и более грузное и не логичное решение, но вродь решение. но увы, так ловлю иной глюк, персонажа забрасывает в нужную точку корабля, но кораблик то движется, в итоге пролетаю небольшое расстояние, и если в передних частях пара метров особо не решает (хоть и смотрится паршиво) то в задней части - пролетаю через окна без напряга. Весь упор в считании физики, скрипт выложил выше. Прикидывал считалку реем позиций и прочего, но в итоге вышло что надо 1 рей на общую позицию и 2 с 3 дабы понять - ступенька перед тобой, или стена (ставить 1 под наклоном и считать разницу - не слишком удобно выходит + не всегдаможет сработать) но блин, 3 рея чисто на осознание пространства, это перебор. Может че посоветуете? а то горстку вариантов посчитал, по сути это замена итоговых глюков и не больше.

Re: (Проблема) движение на движущемся объекте

СообщениеДобавлено: 18 авг 2010, 07:13
Neodrop
Предлагаю такое комбо :
Поставь в отделении от камер неподвижную копию кораблика. Ходи по ней. А для рендера, просто переноси объект (ы) в локальные координаты подвижного корабля.
Наверняка есть ещё решения, но нет возможности потестить, так что копать тебе самому. /:)

Re: (Проблема) движение на движущемся объекте

СообщениеДобавлено: 18 авг 2010, 10:43
Garu
увы, но и это не подходит...
Как вариант пробовал нечто в духе:
стандартный геймплей, зашел на корабли(1ИФ - внутри коллайдера-тригера, 2ИФ - была ли колизия с кораблем) это дает осознание что да, мы точно на кораблике и находимся внутри его зоны действия (не спрыгнули с него), счет относительно новых координат и прочего, но тут по сути ловлю снова глюки именно физики.
попытка замены ступеней телепортами (с палубы в трюм и наоборот) - тоже все хорошо, но опять лажает физика.
У корабля идет меш колайдер, ригидбоди, у перса капсульный коллайдер от чар контроллера, подхожу к стене (во время движения корабля) и "трусь" около нее, о чудо, умудряюсь пролететь и сквозь нее. Сейчас пытаюсь докопаться до норм физики через чайлд, и аналога, без перемещения в чайлд корабля (ну очень уж не охота все так переделывать под чайлд), однако стопорюсь где лучше перебирать этот многокомпонентный геморой.

Re: (Проблема) движение на движущемся объекте

СообщениеДобавлено: 18 авг 2010, 20:10
warr11r
Удочери, может, персу ГО с каким-нибудь еще коллайдером?
Типа одна хрень - хорошо,а вот 2 -лучше.

Re: (Проблема) движение на движущемся объекте

СообщениеДобавлено: 18 авг 2010, 21:02
Garu
пробовал схитрить, раз сфера + ригидбоди в чаелде хавалось, засунул в нее управление:

Код: Выделить всё
var speed = 0.00;
var force = 0.00;

function FixedUpdate ()
{
   var oldAngle = Camera.main.transform.localEulerAngles.x;
   Camera.main.transform.localEulerAngles.x = 0;
   var spin = Camera.main.transform.TransformDirection(Vector3(Input.GetAxis("Vertical") * speed, 0, -Input.GetAxis("Horizontal") * speed));
   Camera.main.transform.localEulerAngles.x = oldAngle;
   rigidbody.AddTorque((spin - rigidbody.angularVelocity) * force);
}


даже такое дает очень фиговый итог с движением по наклонным. А более "лояльную" физику для объекта на корабле, я не представляю. Самая фигня, что все варианты которые успел попробовать, дают почти одни и те же глюки, для чаелда одни (скромнее) вне его - другие.

Re: (Проблема) движение на движущемся объекте

СообщениеДобавлено: 18 авг 2010, 23:30
Paul Siberdt
Перенесите игровую механику подальше от физики и будет вам счастье. Не двигайте персонажа силами, не считайте ускорения... миром правит тригоноетрия, а физика - эт лишь внешняя обертка ;)

Re: (Проблема) движение на движущемся объекте

СообщениеДобавлено: 18 авг 2010, 23:53
Garu
Paul Siberdt писал(а):Перенесите игровую механику подальше от физики и будет вам счастье. Не двигайте персонажа силами, не считайте ускорения... миром правит тригоноетрия, а физика - эт лишь внешняя обертка ;)

Допустим, пример кода можно? То как представляете управление персонажем просто и на движущемся объекте?

Re: (Проблема) движение на движущемся объекте

СообщениеДобавлено: 19 авг 2010, 14:49
Grin
Может через Joint попробовать?

Re: (Проблема) движение на движущемся объекте

СообщениеДобавлено: 19 авг 2010, 15:07
Paul Siberdt
Пример кода:
Код: Выделить всё
myTranslate += myOffset;
... где бы персонаж не находился.

Причем, персонаж позиционируется в LateUpdate, а весь мир - в Update.
И если под собой персонаж трейсит сместившийся объект, то он к своей myOffset добавляет myOffset опоры.

Re: (Проблема) движение на движущемся объекте

СообщениеДобавлено: 19 авг 2010, 19:29
Garu
Grin писал(а):Может через Joint попробовать?

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



Paul Siberdt писал(а):Пример кода:
Код: Выделить всё
myTranslate += myOffset;
... где бы персонаж не находился.

Причем, персонаж позиционируется в LateUpdate, а весь мир - в Update.
И если под собой персонаж трейсит сместившийся объект, то он к своей myOffset добавляет myOffset опоры.

эм, как-то не особо вкурил, как оно должно помочь с вертикальным смещением, ежли персонаж попал на ступеньки + горизонтальным, который воздержит от пролетания через стену, ежли корабль разогнать пошустрее... Можно подробнее для тех, у кого психику уже унесло?

Re: (Проблема) движение на движущемся объекте

СообщениеДобавлено: 19 авг 2010, 20:59
Paul Siberdt
Да, я описал о совокупности смещений, а с проникновениями справляются трассировщики и триггеры.

Все дело в том, что скрипт ежекадрово трассирует окружающее пространство, в частности, опору, а триггеры-объемы контролируют коллизии над опорой. Если на кадре приходит информация, что точка коллизии с полом поднялась на 10 сантиметров выше, вносятся поправки в позицию объекта, согласно изменению точки коллизии ( или тупо поднимаем транслейт, или хитро интерполируем, или делаем что еще вывернутее )

Re: (Проблема) движение на движущемся объекте

СообщениеДобавлено: 03 дек 2010, 17:49
Garu
Отложил эту фигню и занялся другими частями, но теперь снова возник данный вопрос, и охота наконец то его решить...

Общий нужный принцип: есть объект имеющий коллайдер, из-за чего-то там он двигается (спец скрипт управления\скрипт тупо тянущий его куда-то итд) подбивать 1 большой скрипт под все движения - не самый лучший вариант, ибо иногда нужно простейшее движение и это решается скриптом в пару строк к примеру...

Основная проблема на данный момент - если платформа с ступеньками итд, двигается медленно - все пашет как надо и без проблем, если же увеличиваем скорость - любая новая коллизия по направлению движения = стена, даже если разницы по высоте нет вообще. В обратном направлении - пролетает насквозь.

Попробовал из ю3 родной CharacterMotor скрипт, даже после сносной чистки он отстает в расчетах, в итоге получаем что он "дрожит" по направлению движения платформы, и разница при изменении скорости платформы лишь в размере "дерганий" - медленно - небольшое, быстро - колбасит капитально...

Порылся на офф форуме, большая часть предложения оказалась не слишком подходящей, в чайлд засовывать итд - это и вовсе не слишком хорошая идея... Буду рад всем предложениям, ибо все никак не соберу 100% безглючную систему взаимодействия платформы (с ступеньками, стенами итд) + персонаж на ней... Крайний вариант - что бы на довольно внушительной скорости хотя бы не было багов, а то реализовывать все на улиточной скорости - не айс...

Re: (Проблема) движение на движущемся объекте

СообщениеДобавлено: 04 дек 2010, 14:05
Zaicheg
Если есть зависимость от скорости -- надо смотреть в настройки Project Settings -> Time и Project Settings -> Physic