3

我正在创建一个 2D 自上而下的 RPG 游戏,例如《塞尔达传说:与过去的链接》。

当玩家被绘制时,我想更新树深度,以便当玩家 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

具有值和含义的绘制图像线

4

1 回答 1

1

这是一种方法:

从地面到天空,切片您的精灵并进行基于图块的渲染。

假设您有一个 32*32 像素的平铺网格,如果您有一棵 32*96 像素的树,那么切片时将如下所示:

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

逻辑:

  • 绘制 0 楼的所有瓷砖
  • 绘制 1 楼的所有瓷砖
  • ETC ...

那么显然应该隐藏你的玩家的部分将被正确绘制(之前,如果玩家在后面)。

(请注意,树的最低瓷砖不应该是可步行的)

于 2018-03-07T21:30:20.023 回答