【问题标题】:How to implement a Worms style destructible terrain in XNA?如何在 XNA 中实现蠕虫式可破坏地形?
【发布时间】:2011-01-06 04:54:57
【问题描述】:

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

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

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

【问题讨论】:

标签: c# xna terrain


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 我最初的想法是尝试矢量几何。不过,对几何图形进行三角剖分以便我可以使用显卡对其进行绘制有点麻烦。
      【解决方案4】:

      这里有两个示例,它们相互构建,说明如何在 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 上完成。

      【讨论】:

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