我正在使用cocos2d-x和box2d。我正在检测与box2d的碰撞,除了一件小事之外,一切似乎都很顺利。由于某些原因,当物体碰撞时,它们会相互反弹。现在我正在阅读这一点,发现恢复原因导致了这一点。所以我打开了物理编辑器并将两个对象设置为恢复0.0。它仍然这样做,所以我研究了一点,发现有一个静态/运动的身体会阻止这种情况发生,所以在我能够做到这一点的一个对象,因为它不是应用重力等,而是与另一个对象我不得不将它保持为动态,以便将重力应用于它。所以现在当它碰到运动物体停止但动态的身体仍然从另一个物体反弹。它似乎只在它击中的顶点成一定角度的地方才能做到。有没有真正的方法告诉它根本不动。当发生这种情况时,它会将我的主角推离屏幕。
更新 好的,也许我会这样做错了。我只是想学习所以我认为一个“飞鸟”项目将是一个很好的学习经验。所以我想我需要一个物理引擎,所以我选择了box2d,这样鸟就会自行摔倒。然后我只是移动一个棒球棒的图像(向左,因为鸟被固定在x = birdheight / 2和y = screenheight / 2),现在测试碰撞。第一次碰撞撞击了正方形,所以我研究了如何改变矩形。在这样做时,我遇到了物理编辑器。然后,我更新了图像,并为灯具获得了box2d导出。然后我将蝙蝠图像从一个简单的精灵重写为box2d体,以便我可以检测到与正确的新矩形的碰撞。当我第一次实现检测工作正常但两个对象被推向屏幕滚动的方向(向左)。因此,经过一些阅读后,我将蝙蝠图像转换为静止的身体,然后停止推动蝙蝠,但鸟仍在移动。我只使用box2d主要是为了使鸟自身下降并检测矩形的碰撞比图像的简单方块更精确。我是完全做错了还是我错过了让碰撞检测停在交叉路口的确切位置?
答案 0 :(得分:0)
了解传感器,这是您正在寻找的东西。 http://www.iforce2d.net/b2dtut/sensors 如果您使用物理编辑器,那么您只需检查右侧面板上的“传感器”复选框即可完成。