【问题标题】:2D Depth System Method XNA C#2D 深度系统方法 XNA C#
【发布时间】:2018-03-07 19:47:33
【问题描述】:

我正在制作一款 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

【问题讨论】:

  • 既然您是新手,mapeditor.org 之类的内容可能会对您有所帮助。
  • 谢谢。我会使用它,但我必须通过我学校的视觉工作室找到一种方法
  • 那和 id 宁愿学习困难的方式
  • 看看我的回答,我想你会明白的,或者在gamedev.stackexchange.com提问,祝你好运!

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


【解决方案1】:

这是一种方法:

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

假设你有一个 32*32 像素的瓦片网格,如果你有一棵 32*96 像素的树,那么切片时会是这样的:

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

逻辑:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多