Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
二维深度系统法XNA-C#_C#_2d_Xna 4.0_Z Order_Top Down - Fatal编程技术网

二维深度系统法XNA-C#

二维深度系统法XNA-C#,c#,2d,xna-4.0,z-order,top-down,C#,2d,Xna 4.0,Z Order,Top Down,我正在创建一个2D自上而下的RPG游戏,就像《塞尔达传奇:过去的链接》 当绘制球员时,我想更新树的深度,以便当球员的Y位置高于或低于树的Y位置时,树在球员的上方和下方,我认为树是否在顶部应由球员的Y位置决定,即较低或较高。可以这样做吗?我可以在更新方法中更改层深度吗 我不确定你能不能。我对编码不是很有经验。如果有一个正确的方法做到这一点,即使不使用spriteBatch层深度,我将感谢任何帮助 我发现了如何在中使用层深度 spriteBatch.Draw(); 方法 我试图做的事情如下图所示

我正在创建一个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

这里有一个方法:

从地面到天空分割精灵并进行基于平铺的渲染

假设你有一个32*32像素的平铺网格,如果你有一个32*96像素的树,那么当切片时,它会像:

A // layer 2
A // layer 1
A // layer 0 (floor)
逻辑:

  • 在地板0上绘制所有瓷砖
  • 在地板1上绘制所有瓷砖
  • 等等
显然,应该隐藏玩家的部分将正确绘制(如果玩家在后面,则在前面)


(请注意,树的最下面的瓷砖不应该是可行走的)

因为您是新手,类似的东西可能会帮助您。谢谢。我会用这个,但我必须找到一种方法,通过visual studio为我的学校做到这一点,我宁愿学习困难的方法看看我的答案,我想你会明白重点,或者问,祝你好运!