Box2D b2接触传感器无法检测到物体碰撞

时间:2016-01-03 14:03:40

标签: c++ listener box2d

我是Box2D的新手,我试图通过使用b2Contact来检测对象(Ball)是否设法通过另一个对象(目标)。

对于我的Goal对象,我在声明中实现了b2ContactListener,并覆盖了BeginContact和EndContact函数。在代码中,我试图cout一些随机的单词,看看是否没有调用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;

我可以知道我在哪里做错了吗?或者我是否也需要为我的球实现b2ContactListener?

1 个答案:

答案 0 :(得分:1)

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

您可以这样做:

world->SetContactListener(&ContactListenerInstance);

希望它有所帮助。