【问题标题】:physicsBody.applyImpulse & collision happening twice instead of oncephysicsBody.applyImpulse & 碰撞发生两次而不是一次
【发布时间】:2015-12-22 14:24:54
【问题描述】:

这就是交易。在以下代码的帮助下,我的球掉落、撞到地板并弹回

ball.physicsBody?.applyImpulse(CGVectorMake(0, 25))

但是,有时球会识别出两次碰撞而不是一次(在撞击时),并且球会获得 applyImpulse x2。 (由于滞后或其他原因?)导致球飞得很快。我如何确保球不会两次撞到地板?球是 16x16,地板是 16x160。当球和地板较大时,我没有这个问题。但是我真的很想解决这个问题,而且一定是可以的!

【问题讨论】:

    标签: ios swift sprite-kit skphysicsbody


    【解决方案1】:

    发生的情况是球在更新之间移动的速度不够快,无法在下一次更新检查之前离开球拍。

    还记得我们为老板做了什么吗?同样的事情也适用于桨。当球击中桨时,移除它的接触检查。现在你将不得不添加另一个节点,这样当你通过这个节点时,你就可以重新启用桨检查

    【讨论】:

    • 我决定把球放到boss下面,因为我需要快速连续生成一堆球,这导致boss碰撞在2个球同时碰撞时吓坏了.实际上,我设法通过将 paddle.SKPhysicsBody 的高度增加到 64 而不是 16 来解决这个新问题。这并不重要,因为无论如何你都看不到它。所以它很好
    • 两个球同时碰撞导致问题?你一定搞砸了
    • 不,让我重新解释一下 - 当球生成太快时出现问题。一个球产生,接触桨,“激活老板”,然后在第一个球击中老板之前产生另一个球以停用它。这导致第二个球仅在其内部生成就对老板造成伤害
    • 是的,你搞砸了,激活停用状态是每个球,而不是全局
    • 知道它可以创建独特的(self/this)对象语句,这让我松了一口气。我对老板很好奇,但是他是一个单位。他的激活状态一定会以一种奇怪的方式影响其他球,即使这些球都是独特的实体?换句话说 - 单个球可以改变影响其他球的老板激活状态。对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多