Box2D b2Contact传感器无法检测到物体碰撞

Box2D b2Contact sensor unable to detect object collision

本文关键字:碰撞 检测 b2Contact 传感器 Box2D      更新时间:2023-10-16

我是Box2D的新手,我正在尝试通过使用b2Contact来检测一个对象(Ball)是否成功通过了其他对象(Goal)。

对于我的Goal对象,我在声明中实现了b2ContactListener,并重写了BeginContact和EndContact函数。在代码中,我试图定制一些随机单词,看看是否既没有调用BeginContact函数,也没有调用EndContact函数,但没有结果。代码如下:

void Goooal::BeginContact(b2Contact* contact)
{
    std::cout << "AAAAAAAAAAAAA";
    if (contact && contact->IsTouching())
    {
        std::cout << "BBBBBBBBBBBBBBB";
    }
}
void Goooal::EndContact(b2Contact* contact)
{
    std::cout << "CCCCCCCCCCCCCCCC";
}

从上面的代码来看,没有一个输出(AAA/BBB/CCC)出来,我非常确信我的球和进球已经通过了。

传感器声明如下:

    bodyFixtureD.isSensor = true;

我能知道我哪里做错了吗?或者我需要为我的ball实现b2ContactListener吗?

尝试将您创建的Goal对象设置为世界中ContactListener类的对象。(我想你没有做过,因为你没有提到它。)

你可以这样做:

world->SetContactListener(&ContactListenerInstance);

希望能有所帮助。