最佳答案
只是一个想法。我没有测试过。
首先,您必须为 Sprite 设置动画,以产生沿 Z 方向移动的错觉。 :-)
然后您可以使用碰撞过滤根据角色的位置来管理碰撞。
Box2D 始终必须知道两个物体是否发生碰撞,然后再决定它们是否会在场景中发生碰撞。
在每个角色的每次碰撞中,您可以测试其他角色和场景主体的 Y 位置,然后进行测试:
如果碰撞体(大约,阈值对应于您的角色“深度”)位于相同的 Y 位置,您更改碰撞体的碰撞组以执行碰撞具有 body 特征。
看看这个优秀的教程,最后您将获得在自定义函数中使用 b2Filter 来管理碰撞的提示:http://www.iforce2d.net/b2dtut/collision-filtering
您可能还想看看 http://box2d.org/forum/viewtopic.php?f=3&t=8738#p37119处理第一次接触。
如果碰撞体不在同一 Y 处,或者是“ friend ”,则您无需执行任何操作,它们也不会在场景中发生碰撞。
希望有帮助。
关于box2d - 如何使用Box2d实现2.5D世界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12419922/