Я пишу 2D-плитку на основе RTS. И я хочу добавить к нему функцию «псевдо 3D» - мосты через реки.
Я еще не начал кодирование, просто пытаюсь понять, как оно подходит к модели обнаружения столкновений. Лодка, проходящая под мостом, и отряд, движущийся по мосту, в конечном итоге займут ту же ячейку на карте. Как предупредить их от столкновения?
Есть ли общий подход к решению такой проблемы? Или мне нужно реализовать 3D мир, чтобы сделать это?
2d
3d
collision-detection
rts
aleguna
источник
источник
Ответы:
В основном вам придется создать третье измерение, хотя в простейшем случае оно может состоять из двух значений: «на земле / на мосту» и «на воде / под мостом».
Вдохновение можно найти в том, как это выполняет Advanced Strategic Command : подразделения занимают определенный уровень высоты, могут перемещаться только на уровнях высоты, соответствующих их типу, если только нет особых функций, позволяющих им делать иначе (например, ВПП для самолетов) и изменение их обычно стоит очков движения, со штрафами на некоторых уровнях высоты или других. Плитка может быть занята любым количеством юнитов, если каждый находится на разном уровне высоты.
В случае ASC уровни:
источник
Вы можете добавить простой атрибут к каждой плитке, который определяет ее уровень.
Так, например:
Теперь вы можете сортировать плитки в зависимости от их значений слоя и рисовать их снизу -> вверху! Это создаст впечатление, что у вас есть определенная глубина в вашей игре. Большинство движков тайлов поддерживают это. Еще одна интересная вещь, которую вы можете добавить, это прозрачность ваших текстур, чтобы вы могли видеть до нижнего слоя.
Это можно сделать, например, с водой - представьте себе воду на уровне 1, а затем дно океана на уровне 0. Если текстура воды несколько прозрачна, вы сможете увидеть дно океана сверху.
источник