如何在XNA中实现蠕虫风格的可破坏地形?

19 c# xna terrain

我想为我的游戏制作一个想法的原型.这个游戏的想法是玩家将挖掘地面,创建隧道和寻找宝藏.

我正在寻找创建"蠕虫风格"的地形,通过碰撞检测让玩家在隧道中游荡和跳跃.在这些图片中可以看到这种类型的动态地形的例子. 示例1 http://img301.imageshack.us/img301/1675/30184730wd6.png 例2

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

key*_*rdP 34

这个帖子的底部有一些不错的代码.此外,是一个关于实现可破坏地形的一个很好的分步教程.

编辑 - 第二个教程的原始链接已被破坏,因此我已链接到它的存档版本.


Jam*_*ing 7

Riemer对他在XNA开发的游戏采用了类似的方法,炮弹导致地形被"摧毁",并且之前在所述地形上的任何道具都相应地移动.

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

Riemer也有其他一些很好的教程选择.

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


Pin*_*juh 4

有两种可能性,八种可行,但这取决于 XNA 实施起来有多容易:

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