Я хочу иметь возможность делать то, что вы видите на картинке, но с одной стеной. Игрок должен иметь возможность ходить по обе стороны от одного и того же объекта . То есть одна и та же стена находится ниже героя, когда я спускаюсь с нее, и она выше героя, если я иду сверху.
Это как две глубины в одной стене, так что это не просто рисование до или после. Я мог бы разрезать объект на две части, но это было бы простым (и, возможно, дорогим) решением. Как мне это сделать?
2d
draw-order
depth
Xkynar
источник
источник
Ответы:
Вот три способа сделать это. Какой из них подойдет, зависит от того, какую (графически) игру вы делаете.
Как уже заметил пользователь Fabinout: «Разделение объекта на две части… Верхняя часть находится позади персонажа, а нижняя часть находится между игроком и персонажем». Если вы делаете игру с жесткой плиткой (показанные пути - единственные два возможных пути возле стены), это, вероятно, хороший способ сделать это. Обратите внимание, что для того, чтобы это работало, расстояние между верхним и нижним путями должно быть не меньше высоты персонажа.
Недостатком этого метода является то, что он помогает только в таких случаях, как этот; это не общая стратегия для наложения спрайтов.
Нарисуйте все спрайты - как игрока, так и пейзажи - сверху вниз в порядке их «уровня земли» (основание стены, ноги игрока). Это автоматически приведет к тому, что стена будет отображаться с правильной стороны, и это общая стратегия для игр в «изометрической» и «2D RPG» стиле.
Еще одним преимуществом этого является то, что он обычно выглядит хорошо, даже если объекты проходят через друг друга - например, символы, которые не блокируют движение других; прогуливаясь по полю высокой травы. Недостатки в том, что вам нужно эффективно определять порядок рисования (например, либо сортировать свои спрайты, либо иметь двумерный массив плиток, который знает, какие в них спрайты), и это усложняется, когда у вас есть объекты, которые не все визуально укоренены в тот же уровень земли.
Имейте «передний слой» и «задний слой», где ваш персонаж занимает один или другой (и стена рисуется после задней, но перед передней). В зависимости от того, как вы подходите к стене, персонаж переключается на передний или задний слой с помощью триггерных зон. Вот как игры Sonic the Hedgehog обрабатывают такие вещи, как петли.
Преимущество состоит в том, что вы можете иметь по существу две независимые 2D-плоскости для построения элементов уровня. Однако это больше подходит для игры, в которой вертикальное движение подпрыгивает, в то время как из-за формы вашей графики ваша игра выглядит так, что вертикальное движение на экране движется вперед / назад по земле, и их гораздо больше. чем две разные позиции в этом измерении.
источник
Рисуйте объекты в порядке
Y
значения, поэтому объекты «дальше» (выше на экране) рисуются до / под «ближе» объектов. Так просто.В более общем случае просто присвойте объектам значение глубины (которое может быть неявно основано
Y
или явно задано, в зависимости от игры и потребностей) и визуализируйте в этом порядке.Это «алгоритм художника» на работе.
источник