Переход между локациями в Unity2d
У меня игра вида Top-down. Допустим, чтобы перейти с одной локации на другую, я могу использовать зону с коллайдером, в которой прибавляю уровень и загружаю новую сцену. А как например сделать такие зоны перехода, чтобы можно было вернуться обратно? По идее же к каждой зоне должна быть привязана локация в которую она отправляет? Как хранить это всё?
Первая часть кода с триггером:
private void OnTriggerEnter2D(Collider2D collision)
{
Levels.Instance.NextLevel();
}
Вторая с переходом:
public void NextLevel()
{
if (currentLevel < _maxLevels)
{
currentLevel += 1;
SceneManager.LoadScene(currentLevel.ToString());
}
else
{
SceneManager.LoadScene("0");
}
}
Ответы (1 шт):
Нужны две вещи:
- Указатель на локацию: id, ключ, прямая ссылка, что угодно по чему можно найти нужную локацию куда происходит переход.
- Указатель на точку перехода. Поскольку у локаций несколько входов/выходов, нужен индекс или ключ по которому можно понять, где нужно будет заспавнить персонажа.
Из этого следует, что у локации есть список точек переходов, а у переходов коллайдер выхода, точка входа для спавна перед коллайдером. Инфо о том, куда ведёт переход можно прописать в самой точке перехода, либо в отдельном месте список пар-локация/точка, что бы локации не ссылались друг на друга и не имели зависимостей и не было противоречия.
Не прописывать, с возможностью ошибки типа в локации/точке прописано А/2
-> B/1
, а в B/1
-> C/3
, а просто список двунаправленных пар: А/2-B/1
, C/3-B/2
.