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

对于我的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;

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

最佳答案

尝试将您创建的目标对象设置为您世界中的ContactListener类的对象。 (我假设您没有提到它,因为您没有提到它。)

您可以执行以下操作:

world->SetContactListener(&ContactListenerInstance);

希望能帮助到你。

关于c++ - Box2D b2Contact传感器无法检测到物体碰撞,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34577350/

10-11 22:39
查看更多