Навигация по диагональному забору - PullRequest
0 голосов
/ 08 декабря 2018

Я пишу MMORPG-игру, и у меня проблемы с движением игрока на сервере.У меня есть двумерная матрица размером 0,5 х 0,5 метра, которая служит картой проходимости для игроков.Проблема, которую я имею, изображена ниже.Если игрок движется вдоль (и очень близко) к диагональной стене или ограждению, он блокируется самой геометрией блочной карты.Этого не происходит, если заборы / стены выровнены с миром (вертикально или горизонтально).Очевидное решение состоит в том, чтобы увеличить радиус игрока, чтобы он не мог подобраться так близко к забору, или, возможно, сделать ячейки меньше (что на самом деле могло бы сделать то же самое).Но кто-нибудь может придумать альтернативный метод?Я не могу просто сказать «эй, это диагональ, поэтому я нарисую воображаемую линию от угла к углу и убедлюсь, что игрок не может пересечь эту линию».Это не сработает, потому что, как вы можете видеть ниже, забор может иметь некоторые горизонтальные или вертикальные повторения здесь и там.Есть идеи?Заранее спасибо!

Moving along diagonal fence or wall

1 Ответ

0 голосов
/ 09 декабря 2018

Где все?Я решил это сам сейчас, выполнив следующие действия:

Если перемещение персонажа заблокировано, сервер сначала попытается:

Если дельта X еще не равен 0, попробуйте тот же ходс 0 для дельты X.

Если это заблокировано, установите delta X обратно и попробуйте с дельтой Y в качестве 0 и попробуйте снова.

Если это тоже заблокировано, движение заблокировано.

Это позволит скользить по диагональному забору.Если забор выровнен по X или Y, очевидно, что этот метод компонента не вступает в игру, но в этом случае он не нужен, потому что геометрия не будет блокировать вас.Я еще не проверил, как это выглядит для другого наблюдателя (другой персонаж вошел в систему)Это может выглядеть очень неровным и нервным для другого игрока, когда он продолжает обнулять его движение X или Y, когда он зачищает забор или стену.Пока это работает!

...