假设有一个场景如下: 有一个与设备边框大小相同的场景。场景中有一个红色的球,它可以在“世界”中移动。这个世界是由黑色和白色区域定义的,球只能在白色区域内移动。这是一张帮助解释的图片:
可以擦除部分黑色区域,就像用户在场景上用白色绘制一样。这意味着可以移动球的区域不断变化。现在,如何为白色和黑色区域之间的边缘实现一个物理体?
我尝试在每次更改物理体时重新定义它,但是一旦形状变得足够复杂,这根本不是一个可行的解决方案。我尝试创建一个不可见的“盒子”二维数组,并指定每个盒子内的大部分区域是白色还是黑色,如果球碰到黑色盒子,它将被推回。但是,这需要大量的渲染和对数组的过多迭代。由于我的原始数组包含比像素大一点的框,我尝试让这些框更大以使运动稍微平滑一点,但这最终导致球的一部分被白色区域停止并看起来在黑色区域内。这是不希望的,因为用户可以感觉到他们似乎正在撞击的无形障碍。
我尝试寻找其他方法来实现这种“可破坏地形”类型的场景,但我找到并尝试的解决方案是使用其他游戏引擎。为了进一步澄清,我使用的是 Objective-C 和 Apple 的 SpriteKit 框架;而且我不是在寻找一个充满代码的详细类,而是在寻找一些伪代码或实现想法,它们会引导我找到解决方案。
谢谢你。