我想为一个游戏想出一个原型。这个游戏的理念是玩家挖掘地面,创建隧道并寻找宝藏。 我想创造“蠕虫风格”(worms style)的地形,并且为玩家在隧道中漫游和跳跃时提供碰撞检测。可以在以下图片中看到这种动态地形的示例。 我的问题是,实现这种可破坏地形最好的方式是什么?我正在使用XNA游戏工作室。
Riemer在他开发的XNA游戏中采用了类似的方法,炮弹会导致地形被“摧毁”,之前存在于该地形上的任何道具也会相应移动。需要对其进行重构和改进以满足您的需求,但这是一个开始。Riemer还有其他内容的很好的教程选择。 http://www.riemers.net/eng/Tutorials/XNA/Csharp/Series2D/Adding_craters.php
有两种可能性,任何一种都可以实现,但取决于XNA的易用程度: 像其他人建议的那样,使用位图掩码。您保留所有“地面”像素和所有“空气”像素的位图。如果有重力,角色不能穿过地面,而可以穿过空气。 矢量几何。您从矩形“地面”开始,并保持“删除”的地面列表,该列表创建了空气。这种几何形状非常容易编辑:只需将圆形或类似形状附加到列表中,并更新图形即可。我不知道XNA是否具有矢量和形状功能;但是使用这两个东西创建几何形状应该很容易,并稍后应用纹理或类似物。此外,通过保留渲染景观的缓存版本并仅更新新添加的“空气”的边界框的缓存,可以轻松优化此解决方案。但是,这种解决方案需要更多的数学知识。