c# - 二维深度系统方法 XNA C#

标签 c# 2d xna-4.0 z-order top-down

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

绘制玩家时我想更新树的深度,以便当玩家 Y 位置高于或低于树木 Y 位置时它在玩家上方和下方,我认为树是否在顶部应该由玩家的 Y 位置决定,较低或较高。有可能以这种方式做到这一点吗?我可以在更新方法中更改层深度吗?

我不确定你能做到。我在编码时不是很有经验。如果即使不使用 spriteBatch 层深度也有正确的方法来执行此操作,我将不胜感激。

我发现了如何在

spriteBatch.Draw();

方法。

下面的图片显示了我正在尝试做的事情

Woman in Front of Tree

Woman Behind Tree

我用来将树木与草地砖分开的代码使用如下所示的层深度:

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

Drawn image line with values and meanings

最佳答案

这是一种方法:

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

假设您有一个 32*32 像素的图 block 网格,如果您有一棵 32*96 像素的树,那么切片时它会像:

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

逻辑:

  • 绘制第 0 层的所有瓷砖
  • 绘制 1 楼的所有瓷砖
  • 等...

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

(请注意,树的最低瓦片不应该是可行走的)

关于c# - 二维深度系统方法 XNA C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49160079/

相关文章:

c# - 加载关卡后声音无法播放

c# - 如何接受 html 内容作为 MVC+Razor 中辅助函数的参数?

c# - 有什么方法可以在 MS 图表中的 Y2 轴上显示折线图?

c# - 验证消息包含 '{PropertyName}' 而不是属性名称

c# - Response.TransmitFile 的替代方案,用于通过 HTTP 传输文件

javascript - 如何在返回值时不中断函数/循环(Js)

xna - XNA 中的 ToggleFullScreen 会导致设备丢失等错误

Javascript:存储 map 数据的最佳方式?

c# - 从数组中创建形状的算法

c# - 如何检查鼠标左键是否双击?