18

我想为我拥有的游戏制作一个想法的原型。这个游戏的想法是玩家将挖掘地面,创造隧道并寻找宝藏。

我正在寻找创建“蠕虫风格”的地形,为在隧道周围徘徊和跳跃的玩家提供碰撞检测。在这些图片中可以看到这种类型的动态地形的示例。 示例 1 示例 2

我的问题是如何实现这种可破坏地形的最佳方式?我正在使用 XNA 游戏工作室。

4

3 回答 3

7

Riemer 对他在 XNA 中开发的游戏有类似的方法,炮弹会导致地形被“摧毁”,并且之前在所述地形上的任何道具都会相应地移动。

它需要根据您的需要进行重构和改进,但这是一个开始。

Riemer 也有很多其他方面的教程可供选择。

http://www.riemers.net/eng/Tutorials/XNA/Csharp/Series2D/Adding_craters.php

于 2010-01-18T01:36:09.043 回答
4

有两种可能性,一种是可行的,但这取决于 XNA 实现的难易程度:

  • 像其他人建议的那样,位图遮罩。您保留所有“地面”像素和所有“空气”像素的位图。如果你有重力;角色不能从地面坠落,但可以从空中坠落。
  • 矢量几何。你从一个矩形的“地面”开始,并持有一个“移除”地面的列表,这会产生空气。这个几何图形编辑起来非常简单:只需在列表中添加一个圆形或类似的东西,然后更新图形。我不知道 XNA 是否具有矢量和形状能力;但是用这两个东西创建几何体应该很容易,然后应用纹理或类似的东西。此外,通过保留渲染景观的缓存版本,并且仅更新新添加的“空气”的边界框的缓存,这可以很容易地进行优化。不过,这个解决方案需要更多的数学知识。
于 2010-01-18T01:27:13.950 回答
1

这里有两个示例,它们相互构建,说明如何在 XNA 4 中使用像素着色器执行此操作。两个示例都包含源代码。

http://www.syntaxwarriors.com/2012/xna-alpha-mapping-with-pixel-shaders/

http://www.syntaxwarriors.com/2012/xna-alpha-mapping-with-pixel-shader-and-rendertarget2d/

使用像素着色器执行此操作非常快,因为所有繁重的工作都在 gpu 上完成。

于 2012-02-20T08:40:50.763 回答