【问题标题】:Box2d stranglely does not detect collisionBox2d 无法检测到碰撞
【发布时间】:2014-07-18 16:51:21
【问题描述】:

我已经实现了b2ContactListener 来检测碰撞。我有一个重力等于 (0,0) 的世界,我有一个不是传感器的动态体和一个是传感器的运动体。他们之间的碰撞并没有被奇怪地记录下来。但是当我使运动体成为非传感器时,就会检测到碰撞,并且动态体会因为碰撞而改变位置。可能是因为我使用body->SetTransform(...) 函数移动了动态和运动波吗?还是我错过了其他东西?

【问题讨论】:

  • 你读过box2d.org/manual.pdf p.30(睡眠参数)和p.31(激活)吗?
  • 请定义“未注册碰撞”是什么意思。您的联系人监听器是否收到 BeginContact 回调?如果您想要碰撞响应(“身体因碰撞而改变位置”),那么两个身体都不能是传感器。传感器没有碰撞响应。
  • @iforce2d 问题是BeginContact回调没有被调用。

标签: c++ box2d collision


【解决方案1】:

我已经解决了这个问题:我已将睡眠设置更改为 m_world.SetAllowSleeping(false); 并且它有效。问题如下:就没有物理模拟而言,我通过调用SetTransform 函数移动了对象,对象正在休眠。另一方面,休眠对象不能记录碰撞。因此,当我不允许睡眠时,它开始调用BeginContact 回调。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多