我是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?
答案 0 :(得分:1)
尝试将您创建的Goal对象设置为您所在世界中ContactListener类的对象。 (我假设你没有这样做,因为你没有提到它。)
您可以这样做:
world->SetContactListener(&ContactListenerInstance);
希望它有所帮助。