SDL рендеринг плитки и спрайтов

Здравствуйте, недавно я начал возиться с SDL. Так как я интересовался некоторыми 2D / 2.5D играми. Так что я начал возиться с SDL в C ++, я хотел воссоздать что-то похожее на Original Zelda.
Так что, насколько я понимаю, эти игры работают с какой-то изометрической перспективой или стандартным ортогональным представлением, но я не понимаю одну вещь: как можно генерировать трехмерные коллизии между этими объектами на карте (плитками, спрайтами и т. Д., Которые находятся в 2D). Посмотрите ссылку на видео ниже. Это создано исключительно в SDL, это столкновение PerPixel или прямоугольное? Или это может быть связано с OpenGL?
Ссылка на сайт: https://www.youtube.com/watch?v=wFvAByqAuk0

-1

Решение

Оригинал был, вероятно, простым прямоугольным столкновением.
Я считаю, что ваше «трехмерное столкновение» — это частичное столкновение, присутствующее в некоторых объектах. Например, Link может проходить через листья, но не через ствол.

Вы можете сделать это легко двумя способами:

  1. Слои рендеринга и столкновения. Ствол расположен в одном слое и покрыт несколькими ящиками от столкновений. Ссылка присутствует в промежуточном слое. И листья находятся в другом слое, поверх Link. Затем вы можете проверить столкновение между слоем Link и слоем со стволом и другими объектами, например.
  2. Кроме того, вы можете создать свойство для ваших плиток, в котором вы можете сохранить тип столкновения, которое вы надеетесь получить. Например, столкновение ‘box’ скажет вашему двигателю, что объект сталкивается со всех сторон. Или «нижнее» столкновение скажет вашему движку, что Линк столкнется с этим объектом, только если он спустится в объект (это эффект, который вы увидите на некоторых 2D боковых скроллерах: прыгайте через плитку, но затем падайте в нее твердо.

За пиксельное столкновение в тех простых случаях это не стоит. Я считаю, что лучше самим персонализировать столкновение, используя креативность, маски и слои.

Кстати, эта тема будет лучше соответствовать https://gamedev.stackexchange.com/

0

Другие решения


По вопросам рекламы [email protected]