Я работаю над генератором карт для популярного движка 3D-игр, чтобы посмотреть, смогу ли я.Я создал простой набор плиток для тестирования, например, угловые элементы и вертикальные / горизонтальные коридоры.Все плитки имеют одинаковый размер (192 x 192 x 136 ч) и состоят из плоскостей, представляющих стены, пол и потолок.Я кодировал логику генерации порядка тайлов и теперь готов установить координаты.
Например, ради, я пытаюсь переместить плитку вверх (ось Y) ровно на 192 единицы.
Прежде чем я сделал эти плитки, я тестировал с отдельными объектами и просто добавил 192единицы к оси Y объекта.Это работало нормально.Тем не менее, после тестирования движения вверх с помощью одной из этих плиток, я заметил, что нужно вычислять не только ось Y.
Вот как выглядит файл карты плиток до того, как позиция перемещается вверх на 192 единицы:
https://pastebin.com/6iqQwN50
solid
{
"id" "2"
side
{
"id" "1"
"plane" "(0 192 8) (192 192 8) (192 0 8)"
"material" "CONCRETE/BAGGAGE_CONCRETEFLOORA"
"uaxis" "[1 0 0 0] 0.25"
"vaxis" "[0 -1 0 0] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
И вот как это выглядит после переезда:
https://pastebin.com/7cCnTndZ
solid
{
"id" "2"
side
{
"id" "1"
"plane" "(0 192 8) (0 384 8) (192 384 8)"
"material" "CONCRETE/BAGGAGE_CONCRETEFLOORA"
"uaxis" "[1 0 0 0] 0.25"
"vaxis" "[0 -1 0 256] 0.25"
"rotation" "0"
"lightmapscale" "16"
"smoothing_groups" "0"
}
Я мог бы быть болеемоя голова, но есть ли класс C # или, возможно, функция, которая поможет мне позиционировать координаты XYZ этих объектов?
Если это поможет, я ссылаюсь на этот сайт как на документацию по структуре кода для самолетов:
https://developer.valvesoftware.com/wiki/Valve_Map_Format#Planes
У меня есть идея, как это сделать, например, сравнить приведенный выше код до и после и вычислить измененную ось для каждой плоскости, но должен быть лучший способ приблизитьсяэто.