从PhysicsBody中删除弹跳?

时间:2018-03-11 17:00:55

标签: swift sprite-kit

如何从物理实体中完全消除弹性,我已经将所有PhysicsBodies的恢复原状设置为0但是当多个PhysicsBodies碰撞时它们仍然相互反弹,怎么能关闭它? 这是一个视频,我向上和向下滑动,在蓝色的SpriteNodes上触发此代码:

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

https://imgur.com/a/MD2Sc

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

1 个答案:

答案 0 :(得分:0)

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

作为解释: 我认为这是因为你的对象在向物理引擎报告碰撞之前就达到了(轻微)重叠状态。当发生这种情况时,一些物理引擎的第一个响应是通过用一定量的力或运动来移动物体来消除这种重叠。发生了什么似乎是这一运动的延续。

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