swift - 从 PhysicsBody 移除弹跳?

标签 swift sprite-kit

我如何才能完全消除我的 PhysicsBodies 的弹跳,我已经将所有 PhysicsBodies 的恢复设置为 0,但是当多个 PhysicsBodies 发生碰撞时,它们仍然会相互反弹,如何才能关闭此功能? 这是一个视频,我在其中上下滑动会触发蓝色 SpriteNode 上的这段代码:

node.physicsBody?.applyImpulse(CGVector(dx: x, dy: y))

https://imgur.com/a/MD2Sc

我希望蓝色的 SpriteNodes 保持向上或向下而不反弹

最佳答案

您是否在没有任何世界阻尼/摩擦的空间中进行实验?如果是这样,您需要在物体碰撞时将它们的速度归零,以获得零反弹。但是您还需要将它们移到它们碰撞的对象的边界之外。

作为解释: 我认为,这是因为在向物理引擎报告碰撞之前,您的对象正在实现(轻微)重叠状态。发生这种情况时,某些物理引擎的第一 react 是通过使用校正量的力或运动移动对象来消除这种重叠。正在发生的事情看起来像是该运动的延续。

在某些物理引擎中,您有机会确定校正行为的强度和发生频率,甚至可以将物理模拟设置为比帧速率高得多的求解速率。在这些引擎中,您可以找到适当的设置平衡来防止这种情况发生。但不是在 SpriteKit 中。

关于swift - 从 PhysicsBody 移除弹跳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49222634/

相关文章:

ios - 没有 Optional() 无法打印

swift - 无法在 Swift 中通过 MapKit 绘制折线

ios - iAd 卡住 Sprite Kit 应用

swift - 如何检查 Sprite 节点是否改变位置

ios - 字符串没有在 ios Swift 中正确转换为日期

ios - 如何在使用 `layoutAttributesForElements` 时为 Collection View 布局更改设置动画?

ios - UIStackView 和 Fill Distribution - 不尊重内容拥抱优先级

ios - 从侧面生成敌人

ios - 如何在 sprite kit 中处理多任务

ios - 使用 SKNode 的寻路不工作