Отслеживайте, когда игрок входит / выходит из зоны в игре - PullRequest
0 голосов
/ 19 января 2020

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

Зоны загружаются с помощью файла json, поступающего из базы данных (MySQL), и представляются в Grid Layout Group. Каждая зона имеет идентификатор зоны в базе данных, который задается в локальной переменной в префабе зоны.

Когда игрок (вы) нажимает на зону, вы получите кнопку «Путешествие в». Когда кнопка «Travel to» нажата, идея состоит в том, чтобы «переместить» игрока в эту зону, закрасив рамку изображения зоны желтым цветом, чтобы выделить место, где вы находитесь. Фактический игрок не двигается, только пользовательский интерфейс и текст, отображающий информацию.

Мои проблемы:

  1. Какой хороший и простой способ дать системе знать в какой зоне вы находитесь? Я имею в виду bool или что-то вроде (bool playerInZone), но как мне установить значение true / false в других зонах?
  2. Как мне сбросить цвет, когда игрок покидает зону и входит в другую? В настоящее время у меня нет проблем с установкой цвета при нажатии кнопки, но я не могу понять, как восстановить предыдущую зону.

Не могу обернуться вокруг этого. ..

Я не уверен, нужен ли код, мне просто нужны советы, как думать в этом случае.

1 Ответ

0 голосов
/ 19 января 2020

Отредактируйте после лучшего понимания вопроса:

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

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

Это, вероятно, Хорошая идея сохранить «зоны» в качестве дочерних объектов указанного менеджера. Прочтите о том, как найти игровые объекты из родительских игровых объектов. Я не уверен, какой объект перехватывает щелчок мыши, но при условии, что это сами зоны, чем менеджер может подписаться на события в зонах, которые будут срабатывать при нажатии, или просто рефакторинг для получения одного объекта (возможно, менеджера) обрабатывать входы пользовательского интерфейса.

Надеюсь, это более полезно. Дайте мне знать, если вам нужны какие-либо разъяснения.

Предыдущий комментарий

Используйте триггер коллайдера .

Вы можете использовать OnTriggerEnter и OnTriggerExit , чтобы установить bool, когда игрок находится в зоне. Если вам нужна координация между разными триггерами и разными зонами, вам понадобится какой-то менеджер для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...