Slomix / ParkourBeat

4 stars 5 forks source link

Сложности с отслеживанием остановки игрока #64

Open Dymeth opened 7 months ago

Dymeth commented 7 months ago

Каким образом можно задетектить остановку игрока?

PlayerMoveEvent - штука удобная, но детктить остановку им можно лишь тогда, когда игрок покрутил головой после остановки. Если мышкой игрок не дёргал - PlayerMoveEvent просто не вызывается после остановки игрока.

Пробовал отследить шедулером, но столкнулся с другой проблемой - периодически то ли сеть зависает, то ли клиент подвисает, в итоге в шедулере позиция игрока остаётся прежней, даже если игрок в этот момент находится в движении.

Для понимания - PlayerMoveEvent как раз вызывается при получении от клиента пакета передвижения, но не чаще одного раза в тик.

Пробовал ещё X и Z вектора движения проверять, но они вообще нулевые, если игрок просто бежит

Dymeth commented 7 months ago

Пока только одно предположение о реализации - отслеживать получение пакетов с локацией от игрока. Если пакет пришёл, а позиция с предыдущего тика не изменилась - значит игрок остановился