Box2D 未检测到碰撞
Box2D not detecting collision
我正在使用 LibGdx 库的 Box2D 扩展开发一款游戏,除碰撞检测外,一切正常。
这是目前的样子:Image
这个想法是玩家(小圆圈)可以在他的范围内跳跃(重力设置为朝向地面中心)以躲避围绕地面旋转的传入障碍物。一旦障碍物到达 despawner,ContactListener 应该调用一个方法来摧毁障碍物 body.
首先,我有几个不同的身体:
- 播放器(动态 Body)
玩家仅受重力和一些施加力的影响(无变换)
- 地面(运动学 Body)
地面只有一个线性速度(这就是为什么它不是静态的body)
- 障碍物(运动学 Body)
使用 setTransform(position, angle) 方法移动障碍物
- Despawner(静态 Body)
我也在使用位过滤器来管理冲突(我已经三重检查并且不是问题的根源)。
实际问题是,当障碍物 Body 是碰撞的一部分时,我的 ContactListener 不会调用 beginContact() 方法,除非他与玩家 Body 发生碰撞。所有其他物体相互碰撞得很好。
感谢您的帮助!
来自此处的手册:
http://www.box2d.org/manual.html#_Toc258082973
Kinematic bodies do not collide with other static or kinematic bodies.
你必须想出一种新的方法来触发消失器。您将无法在两种动能或动能与静态 body 类型之间发生碰撞。也许 body 带有传感器夹具。或 Y 位置值。或关闭重力的动态 body。
游戏看起来不错,期待。
我正在使用 LibGdx 库的 Box2D 扩展开发一款游戏,除碰撞检测外,一切正常。
这是目前的样子:Image
这个想法是玩家(小圆圈)可以在他的范围内跳跃(重力设置为朝向地面中心)以躲避围绕地面旋转的传入障碍物。一旦障碍物到达 despawner,ContactListener 应该调用一个方法来摧毁障碍物 body.
首先,我有几个不同的身体:
- 播放器(动态 Body)
玩家仅受重力和一些施加力的影响(无变换) - 地面(运动学 Body)
地面只有一个线性速度(这就是为什么它不是静态的body) - 障碍物(运动学 Body)
使用 setTransform(position, angle) 方法移动障碍物 - Despawner(静态 Body)
我也在使用位过滤器来管理冲突(我已经三重检查并且不是问题的根源)。
实际问题是,当障碍物 Body 是碰撞的一部分时,我的 ContactListener 不会调用 beginContact() 方法,除非他与玩家 Body 发生碰撞。所有其他物体相互碰撞得很好。
感谢您的帮助!
来自此处的手册:
http://www.box2d.org/manual.html#_Toc258082973
Kinematic bodies do not collide with other static or kinematic bodies.
你必须想出一种新的方法来触发消失器。您将无法在两种动能或动能与静态 body 类型之间发生碰撞。也许 body 带有传感器夹具。或 Y 位置值。或关闭重力的动态 body。
游戏看起来不错,期待。