2016-01-20 6 views
0

У меня есть игра Unity, над которой я работаю. В настоящее время он находится в базовом состоянии, но цель состоит в том, чтобы несколько воспроизвести геймплей старого стиля telnet MUDs графическим способом. Строительство карты на этом этапе является ручным, а не автоматическим, хотя это планируется позже. Я могу легко разместить комнаты в 2-й сетке, каждая из целых единиц от друг друга, по оси x и y. Я нахожусь на том этапе, где у меня есть несколько игр Room Room, и у каждого из них есть сценарий C# (давайте назовем скрипт «a_room.cs»). Каждый скрипт имеет общедоступную переменную gameObject для комнат, которые расположены на севере, юге, востоке и западе от этой конкретной «комнаты».Unity C# номера, находящиеся рядом комнаты

Мой вопрос; есть ли способ, чтобы каждая «комната», как во время работы, так и в редакторе, фигурировала сама по себе, какие «комнаты» ближе всего к каждому из своих конкретных направлений? Принимая во внимание, что может быть несколько комнат в определенном направлении и только самое близкое, а также тот факт, что в этом направлении не может быть номеров?

Мне не обязательно нужен код в качестве ответа, логика и важные функции - это то, что мне нужно.

Также; если в этом методе есть что-то вопиющее, то альтернативные предложения приветствуются.

+1

Вы можете пометить каждую из комнат произвольным тегом (скажем, «комната» на данный момент), а затем использовать [this] (http://docs.unity3d.com/ScriptReference/GameObject.FindGameObjectsWithTag. html), чтобы получить список всех комнат, а затем оттуда простая математика, чтобы найти ближайшую комнату в каждом направлении. – Taelsin

+0

Спасибо Taelsin, я собираюсь использовать это вместе с ответом ниже. – Marky

ответ

0

У вас может быть глобальный список, содержащий все эти объекты a_room.

В идеале вы можете назначать N/S/E/W при создании экземпляров самих комнат. Пример: после создания R1 R2 создается к востоку от R1, а также назначается как EastRoom R1.

В противном случае, поскольку помещения размещаются на определенных «n» единицах от следующего (по горизонтали или вертикали), вы можете выполнить поиск в списке, чтобы узнать, какие комнаты размещены в соседних местах в определенном помещении. Пример: если R1, как известно, находится в позиции (x, y), выполните поиск по глобальному списку, чтобы найти комнату, местоположение которой (x + n, y) и назначить ее как EastRoom R1; (x-n, y) в качестве WestRoom R1 и т. д.

Надеюсь, что это поможет!

0

Если игровые объекты уже разбиты на куски, вы можете упорядочить их в списке по его положению (x, y, z), как только они будут упорядочены, просто установите N, S, E, O для следующего объекта в список ...

 Смежные вопросы

  • Нет связанных вопросов^_^