Метод 2D-системы глубины XNA C#

Я создаю 2D-RPG с видом сверху, например, Legend of Zelda: связь с прошлым.

когда игрок нарисован, я хочу обновить глубину дерева, чтобы оно было над и под игроком, когда положение игрока по оси Y выше или ниже, чем положение дерева по оси Y, я думаю, находится ли дерево сверху или нет, должно решаться позиция игроков Y, будучи ниже или выше. возможно ли это сделать таким образом? Могу ли я изменить глубину слоя в методе обновления?

Я не уверен, что ты можешь. я не очень опытен в кодировании. Если есть правильный способ сделать это даже без использования глубины слоя spriteBatch, я был бы признателен за любую помощь.

Я обнаружил, как использовать глубину слоя в

spriteBatch.Draw();

Метод.

То, что я пытаюсь сделать, показано на изображениях ниже.

Женщина перед деревом

Женщина за деревом

Код, который я использую для отделения деревьев от плиток травы, использует глубину слоя, как показано ниже:

spriteBatch.Begin(SpriteSortMode.FrontToBack, blendState = null, samplerState = null, DepthStencilState.DepthRead);

spriteBatch.Draw(tree, treePos, null, null, Vector2.Zero, 0, null, Color.White, SpriteEffects.None, 0.6f);

spriteBatch.End();

Метод рисования плитки для

tile

установлено значение с плавающей запятой

0.5f

Нарисованная линия изображения со значениями и значениями


person Lonchenzo    schedule 07.03.2018    source источник
comment
Поскольку вы новичок, вам, вероятно, поможет что-то вроде mapeditor.org.   -  person aybe    schedule 08.03.2018
comment
Спасибо. Я бы использовал это, но мне нужно найти способ сделать это через визуальную студию для моей школы.   -  person Lonchenzo    schedule 08.03.2018
comment
это и я лучше узнаю трудный путь   -  person Lonchenzo    schedule 08.03.2018
comment
Взгляните на мой ответ, я думаю, вы поймете суть, или спросите на gamedev.stackexchange.com, удачи!   -  person aybe    schedule 08.03.2018


Ответы (1)


Вот как это сделать:

Нарезайте свои спрайты и выполняйте рендеринг на основе тайлов, начиная с земли и заканчивая небом.

Скажем, у вас есть сетка плитки, каждая из которых имеет размер 32 * 32 пикселя, если у вас есть дерево размером 32 * 96 пикселей, то при нарезке оно будет выглядеть так:

A // layer 2
A // layer 1
A // layer 0 (floor)

Логика:

  • нарисовать все плитки на полу 0
  • нарисовать все плитки на этаже 1
  • и т.д ...

Тогда, очевидно, та часть, которая должна скрывать вашего игрока, будет отрисована правильно (раньше, если игрок сзади).

(обратите внимание, что самая нижняя плитка дерева не должна быть доступной для ходьбы)

person aybe    schedule 07.03.2018