Skip to main content
 首页 » 操作系统

ios之更改现有 Swift iOS 应用程序中的 b2_velocity 阈值

2024年01月01日39shangdawei

我正在使用 Swift 和 SpriteKit 开发一款 iOS 游戏。它涉及两个或多个 SKShapeNodes 之间的碰撞,这些 SKShapeNodes 具有与之相伴的物理体。

我的问题是,当它们发生碰撞时,如果它们的速度太慢,碰撞将被视为无弹性,可以说它们不会弹跳,而是“粘附”在一起。

通过大量搜索,我相信我发现问题出在底层物理引擎 Box2d 中。有一个已定义的常量“b2_velocityThreshold”设置为 1.0f,如果以低于该阈值的速度发生碰撞,我就会遇到上述问题。

如何将该值更改为有助于维持弹性碰撞的数字?我不确定如何访问这些文件并能够更新该值。我是否需要下载 Box2d 库,然后以某种方式将其连接到我的项目中?或者我需要重新启动并从头开始导入吗?并从一开始就用 C++ 构建项目,因为 Box2d 是用 C++ 编写的?

请您参考如下方法:

在 Sprite Kit 中,您无法更改任何 box2d 参数,因为没有 Sprite Kit 的源代码和 Apple 用来构建 Sprite Kit 的 Box2d 版本。您必须使游戏能够使用 Sprite Kit API 公开的任何参数。

您可以尝试一件事:将两个缓慢移动的物体的摩擦设置为 0。这可能会在碰撞时保留它们的能量(速度)。