Хотели бы вы научиться создавать захватывающие 3D игры с помощью технологии ray casting? Эта статья расскажет вам о принципах работы этой уникальной технологии в pygame. Готовы погрузиться в мир разработки игр? Начнем захватывающее путешествие в мир ray casting!
Основные принципы Ray casting
Данная технология работает по следующему принципу: вы находитесь в какой-то точке на игровой сцене и из этой точки выпускаются лучи (или один луч), которые движутся по своему вектору. Как только они сталкиваются с преградой, то луч пропадает, а у твоей точки появляется информация, на каком расстоянии от тебя находится данный объект на сцене.
Чем больше лучей посылается по одному направлению тем лучше ты можешь узнать информацию о преграде, а точнее об её ширине.
Как видно из примера выше, рассеивание лучей позволяет посчитать ширину преграды и от этого выстраивать логику и визуализацию.
А причем здесь 3D если все это выглядит, как двухмерное пространство, спросите вы? И будете абсолютно правы. Да, 3D здесь будет строиться на базе 2D мира. Как? Очень просто. Ой, здесь я конечно уже заговорился. Не совсем и просто, когда глазком пробежитесь по математике Ray cast 🙂. Но не бойтесь, все разберем.
Теперь мы знаем какое расстояние до стены, а значит мы можем понять какая у неё высота, чтобы отобразить её на нашей сцене в трехмерном виде. Звучит непонятно? Понимаю… Поэтому, давайте разбираться в базовых вещах.
Подумай, что будет, если вы стоите в поле и видите в 2 километрах от себя пятиэтажный дом? Точнее какой высоты он будет для вас? Да, он будет казаться небольшим, возможно, будет казаться даже ниже чем вы. А теперь приблизимся к нему на 1 километр и теперь посмотри на него, что изменится? Он станет выше, и будет казаться размером одноэтажного дома. А если подойти в плотную к дому? То мы увидим лишь несколько кирпичиков от его стены, а вся остальная конструкция нам будет не видна.
В это и заключается принцип определения высоты стены при работе с Ray casting при отображении преград в 3D виде находясь при этом в двухмерном пространстве.
Я думаю, что тебя все еще гложет вопрос. А как мы будем отображать 3D стену в двухмерной сцене? Все очень просто.
Тебя смущает закоренелое представление того, что в двухмерном пространстве ты можешь увидеть эту стену только сверху, как в представленных схемах выше. Но это вид для ray cating, а мы говорим о виде игрока, он же должен видеть эту стену не сверху, а в виде сбоку. А в виде сбоку стена из линии превращается в прямоугольник. Давай посмотрим это на схеме в трех разных отдаленьях.
Теперь стало более понятно, как устроена данная технология? Надеюсь, что да.
У меня есть только одно пояснение. Мы с тобой говорили об изменении высоты при приближении или отдалении от стены, но при этом изменяли и ширину. На схеме ошибки нет, просто хотелось бы это оговорить.
Если ты внимательно читал статью, то запомнил, что чем больше лучей, тем точнее мы можем узнать ширину преграды. На представленной схеме лучей достаточно, поэтому мы легко изменяли высоту и ширину объекта.
Я хочу сделать цикл статей по Ray casting и не смешивать все подряд в один материал. Поэтому данную статью хочу оставить так, именно на этапе исследования. Далее будем погружаться все глубже, узнавать тонкости и писать код на базе библиотеки pygame в python. Для того, чтобы ты понимал к чему мы движемся, оставлю картинку проекта, который у нас получится после изучения данной технологии.
Мне нужно знать, интересна ли эта тема для вас, поэтому дайте знать, стоит ли продолжать: комментарий или лайк. В целом покажите интересна ли эта тема или можно заканчивать её на данной статье.
На сегодня все подписывайся, чтобы ничего не пропустить.