我正在使用 Cocos2D 和 Box2D 创建简单的 iOS 游戏。在我的游戏中,用户必须通过射击带有字母的正方形来创建完整的单词。如果射击的字母是正确的方块应该爆炸,否则方块应该掉下来。我创建了简单的接触监听器,我可以检测到子弹和正方形之间的碰撞,但问题是当字母不正确时如何避免碰撞力?在那种情况下(不正确的字母),我希望正方形在不向正方形施加碰撞力的情况下简单地倒下。
也许我可以删除广场并在删除的位置创建新的,但我认为这不是最好的主意:)
我正在使用 Cocos2D 和 Box2D 创建简单的 iOS 游戏。在我的游戏中,用户必须通过射击带有字母的正方形来创建完整的单词。如果射击的字母是正确的方块应该爆炸,否则方块应该掉下来。我创建了简单的接触监听器,我可以检测到子弹和正方形之间的碰撞,但问题是当字母不正确时如何避免碰撞力?在那种情况下(不正确的字母),我希望正方形在不向正方形施加碰撞力的情况下简单地倒下。
也许我可以删除广场并在删除的位置创建新的,但我认为这不是最好的主意:)
我会提出的一个建议是在碰撞时,如果字母不正确,请将物体 x 和 z 速度设置为 0。这样,当它们与不正确的正方形碰撞时,它们只会坠落。
您可以做的另一件事是将目标方块的主体设置为固定(或刚性,我不记得它在 Box2d 中的名称)。因此,即使一个不正确的字母与它发生碰撞,它也不会让步,但字母会弹开它。如果字母正确,您可以正常爆炸。
我建议的解决方案是在联系侦听器的 PreSolve 回调中将子弹的速度在两个方向上都设置为 0。显然,您在 PreSolve 函数中进行了检查。这样,由于该函数称为 PreSolve,碰撞计算尚未发生。因此将速度设置为 0 将使子弹在力方面对正方形没有影响。