твердое тело прыгает на месте

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

твердое тело прыгает на месте

Сообщение Zimaell 15 апр 2023, 20:50

делаю контроллер на твердом теле и остановился на следующем моменте, объект прыгает на месте постоянно, вот пример
Синтаксис:
Используется csharp
if(!Ground){ MoveDir.y += -1f; }else{ MoveDir.y = 0f; }
if(MoveDir != Vector3.zero){ // MoveDir это Vector3 x, z оси горизонтальная и вертикальная
    RB.MovePosition(RB.transform.position + MoveDir * 4f * Time.fixedDeltaTime);
    }

то есть по задумке он должен направляться вниз если нет земли под ногами, земля же проверяется сферой под коллайдером (на 0.2 ниже).

а он постоянно прыгает на месте, почему не пойму...
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: твердое тело прыгает на месте

Сообщение 1max1 15 апр 2023, 21:49

Потому что MovePosition не используется для динамических тел, он проходит сквозь коллайдеры.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: твердое тело прыгает на месте

Сообщение Zimaell 15 апр 2023, 21:58

1max1 писал(а):Потому что MovePosition не используется для динамических тел, он проходит сквозь коллайдеры.

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

сначала я через мувтовардс делал и было все отлично, и перемещение и прыжки и падения, но проваливается, например если бежать в наклонённую поверхность.

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

а может можно как-то избежать провалов в пол и стены без РБ и СС?
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: твердое тело прыгает на месте

Сообщение 1max1 15 апр 2023, 23:52

rb.velocity меняй и не будет проваливаться.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: твердое тело прыгает на месте

Сообщение Zimaell 16 апр 2023, 00:01

1max1 писал(а):rb.velocity меняй и не будет проваливаться.

а потом сетевую копию чем двигать?
я имею ввиду вот на одном клиенте я его передвинул, далее на другой клиент я передаю координаты куда он должен передвинуться, rb.velocity можно будет с точностью рассчитать?
просто пробовал пока что по сети делать через обычный трансформ и товардс то получалось отлично...
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: твердое тело прыгает на месте

Сообщение 1max1 16 апр 2023, 00:56

Сеть и физика, ммм. Рассчитать можно, но сложно(
Тогда ковыряй вот это https://docs.unity3d.com/ScriptReferenc ... ation.html
Поможет написать костыли для того чтобы не проходил через коллайдеры и управлялся трансформом.
Кстати, есть вот супер новые технологии на эту тему :)) https://docs-multiplayer.unity3d.com/ne ... index.html
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: твердое тело прыгает на месте

Сообщение Zimaell 16 апр 2023, 08:58

1max1 писал(а):Поможет написать костыли для того чтобы не проходил через коллайдеры и управлялся трансформом.

например? можно подобные темы или хоть как называются эти костыли?
думаю мне лучше без РБ, так как перемещаться могут сотни нпс по генерируемой территории и получается что на них всех цеплять РБ, накладно, большую часть они на месте что-то делают и изредка перемещаются от точки А до Б, запечь территорию не получится так как в любое время может к примеру что-то прилететь и изменить к примеру пол, яму сделать например, а он будет идти по ровной по запеченной местности.
Поэтому лучше просто трансформ двигать но так чтобы не падал в другие коллайдеры...
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: твердое тело прыгает на месте

Сообщение 1max1 16 апр 2023, 09:49

например? можно подобные темы или хоть как называются эти костыли?

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

О, уже какие-то сотни объектов оказывается у тебя есть, которые в реальном времени по сети что-то делают каждый кадр. Тогда точно лучше без рб, раз тебе так удобней и роднее.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: твердое тело прыгает на месте

Сообщение Zimaell 16 апр 2023, 10:33

1max1 писал(а):
например? можно подобные темы или хоть как называются эти костыли?

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

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

по сути постоянная передача координат будет от персонажа, а от нпс будет передаваться задание, то есть направился нпс в бочку Б и на другому просто передались конечные координаты, при учёте фиксированного апдейта и одинакового просчета они будут идти идентично, а вот управляемый персонаж уже будет постоянно передает данные...
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: твердое тело прыгает на месте

Сообщение Alkos26Rus 16 апр 2023, 22:17

Zimaell писал(а):а от нпс будет передаваться задание, то есть направился нпс в бочку Б и на другому просто передались конечные координаты, при учёте фиксированного апдейта и одинакового просчета они будут идти идентично, а вот управляемый персонаж уже будет постоянно передает данные...

Это будет не стабильная система, в любом случае нужна будет какая то синхронизация позиции\велосити. 1) в такую систему будет вмешиваться плеер с другой синхронизацией и нарушать ее. 2) если используется float, то можешь забыть о точной синхронизации. 3)сама физика использует float, что будет давать разные значения на разных устройствах. Это будет что вроде снежного кома, чем дальше тем хуже синхронизация. Поэтому вряд ли у тебя получится синхронизировать ботов только при помощи команд, по позиции тоже нужно будет это все проверять. Обычно такое делают в стратегиях где полностью отказываются от физики и сами прописывают все поведение, тогда да можно.


Ты кстати код не дал где у тебя Ground назначается
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: твердое тело прыгает на месте

Сообщение Zimaell 16 апр 2023, 23:53

Alkos26Rus писал(а):
Zimaell писал(а):а от нпс будет передаваться задание, то есть направился нпс в бочку Б и на другому просто передались конечные координаты, при учёте фиксированного апдейта и одинакового просчета они будут идти идентично, а вот управляемый персонаж уже будет постоянно передает данные...

Это будет не стабильная система, в любом случае нужна будет какая то синхронизация позиции\велосити. 1) в такую систему будет вмешиваться плеер с другой синхронизацией и нарушать ее. 2) если используется float, то можешь забыть о точной синхронизации. 3)сама физика использует float, что будет давать разные значения на разных устройствах. Это будет что вроде снежного кома, чем дальше тем хуже синхронизация. Поэтому вряд ли у тебя получится синхронизировать ботов только при помощи команд, по позиции тоже нужно будет это все проверять. Обычно такое делают в стратегиях где полностью отказываются от физики и сами прописывают все поведение, тогда да можно.


Ты кстати код не дал где у тебя Ground назначается

Ground у меня чексферой вычисляется, она находится на 0.1 ниже капсулы, радиус на 0.1 больше капсулы.
а от физики я хочу полностью отказаться, передавать конкретно координаты, с парой ботов получается нормально по сети, боты синхронизируются тоже нормально, в общем на прямой местности работает нормально, но нужно еще учитывать то что местность может быть неровная, плюс они могут прыгать и т.д...
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: твердое тело прыгает на месте

Сообщение Alkos26Rus 17 апр 2023, 19:32

Zimaell писал(а):а от физики я хочу полностью отказаться, передавать конкретно координаты

Как у тебя будут сталкиваться объекты без физики?
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: твердое тело прыгает на месте

Сообщение Zimaell 17 апр 2023, 22:04

Alkos26Rus писал(а):
Zimaell писал(а):а от физики я хочу полностью отказаться, передавать конкретно координаты

Как у тебя будут сталкиваться объекты без физики?

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

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

в общем движение есть...
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45

Re: твердое тело прыгает на месте

Сообщение Alkos26Rus 17 апр 2023, 22:28

Zimaell писал(а):ну у объектов же есть коллайдеры

Ну значит ты используешь физику.

при учёте фиксированного апдейта и одинакового просчета они будут идти идентично

Я так понял что твоя эта система только в задумке, на практике ты ее не применял с сотнями объектов, поэтому в любом случае столкнешься с тем что будет жесткий рассинхрон со временем
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: твердое тело прыгает на месте

Сообщение Zimaell 18 апр 2023, 00:24

Alkos26Rus писал(а):Ну значит ты используешь физику.

но без RidgidBody и CharacterController...
Alkos26Rus писал(а):Я так понял что твоя эта система только в задумке, на практике ты ее не применял с сотнями объектов, поэтому в любом случае столкнешься с тем что будет жесткий рассинхрон со временем

по сети пока что только два клиента соединяю, 1 на 1 бегают довольно таки живо, толпы пока не пробовал, сначала им контроллеры хочу нормальные сделать.
ну а в остальном будем посмотреть....
Zimaell
UNIверсал
 
Сообщения: 474
Зарегистрирован: 04 июл 2020, 18:45


Вернуться в Почемучка

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

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