Как мне обрабатывать игровые объекты с двумя глубинами?

8

низ объекта под игроком, его верх над игроком

Я хочу иметь возможность делать то, что вы видите на картинке, но с одной стеной. Игрок должен иметь возможность ходить по обе стороны от одного и того же объекта . То есть одна и та же стена находится ниже героя, когда я спускаюсь с нее, и она выше героя, если я иду сверху.

Это как две глубины в одной стене, так что это не просто рисование до или после. Я мог бы разрезать объект на две части, но это было бы простым (и, возможно, дорогим) решением. Как мне это сделать?

Xkynar
источник
3
Разделение объекта на две части кажется наиболее естественным способом сделать это. Верхняя часть находится позади персонажа, а нижняя часть находится между игроком и персонажем. Тем не менее, вычислительно не дорого, вы просто должны убедиться, что обе части не отходят друг от друга.
Fabinout
Вы, скорее всего, должны будете это сделать, но есть ли другие идеи?
Xkynar

Ответы:

8

Вот три способа сделать это. Какой из них подойдет, зависит от того, какую (графически) игру вы делаете.

  1. Как уже заметил пользователь Fabinout: «Разделение объекта на две части… Верхняя часть находится позади персонажа, а нижняя часть находится между игроком и персонажем». Если вы делаете игру с жесткой плиткой (показанные пути - единственные два возможных пути возле стены), это, вероятно, хороший способ сделать это. Обратите внимание, что для того, чтобы это работало, расстояние между верхним и нижним путями должно быть не меньше высоты персонажа.

    Недостатком этого метода является то, что он помогает только в таких случаях, как этот; это не общая стратегия для наложения спрайтов.

  2. Нарисуйте все спрайты - как игрока, так и пейзажи - сверху вниз в порядке их «уровня земли» (основание стены, ноги игрока). Это автоматически приведет к тому, что стена будет отображаться с правильной стороны, и это общая стратегия для игр в «изометрической» и «2D RPG» стиле.

    Еще одним преимуществом этого является то, что он обычно выглядит хорошо, даже если объекты проходят через друг друга - например, символы, которые не блокируют движение других; прогуливаясь по полю высокой травы. Недостатки в том, что вам нужно эффективно определять порядок рисования (например, либо сортировать свои спрайты, либо иметь двумерный массив плиток, который знает, какие в них спрайты), и это усложняется, когда у вас есть объекты, которые не все визуально укоренены в тот же уровень земли.

  3. Имейте «передний слой» и «задний слой», где ваш персонаж занимает один или другой (и стена рисуется после задней, но перед передней). В зависимости от того, как вы подходите к стене, персонаж переключается на передний или задний слой с помощью триггерных зон. Вот как игры Sonic the Hedgehog обрабатывают такие вещи, как петли.

    Преимущество состоит в том, что вы можете иметь по существу две независимые 2D-плоскости для построения элементов уровня. Однако это больше подходит для игры, в которой вертикальное движение подпрыгивает, в то время как из-за формы вашей графики ваша игра выглядит так, что вертикальное движение на экране движется вперед / назад по земле, и их гораздо больше. чем две разные позиции в этом измерении.

Кевин Рид
источник
Использование слоев, подобных # 3, - это то, сколько, если не большинство хитростей прокрутки боковых прокруток старых консолей сработало.
Патрик Хьюз
1

Рисуйте объекты в порядке Yзначения, поэтому объекты «дальше» (выше на экране) рисуются до / под «ближе» объектов. Так просто.

В более общем случае просто присвойте объектам значение глубины (которое может быть неявно основано Yили явно задано, в зависимости от игры и потребностей) и визуализируйте в этом порядке.

Это «алгоритм художника» на работе.

Шон Миддледич
источник