Box2D b2Contact 传感器无法检测到物体碰撞
Box2D b2Contact sensor unable to detect object collision
我是 Box2D 的新手,我正在尝试使用 b2Contact 检测一个对象 (Ball) 是否成功穿过另一个对象 (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)的none出来了,我很确定我的Ball和Goal已经相互通过了。
传感器声明如下:
bodyFixtureD.isSensor = true;
请问我哪里做错了吗?或者我还需要为我的球实现 b2ContactListener 吗?
尝试将您创建的目标对象设置为您世界中的 ContactListener class 的对象。 (我假设你没有这样做,因为你没有提到它。)
你可以这样做:
world->SetContactListener(&ContactListenerInstance);
希望对您有所帮助。
我是 Box2D 的新手,我正在尝试使用 b2Contact 检测一个对象 (Ball) 是否成功穿过另一个对象 (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)的none出来了,我很确定我的Ball和Goal已经相互通过了。
传感器声明如下:
bodyFixtureD.isSensor = true;
请问我哪里做错了吗?或者我还需要为我的球实现 b2ContactListener 吗?
尝试将您创建的目标对象设置为您世界中的 ContactListener class 的对象。 (我假设你没有这样做,因为你没有提到它。)
你可以这样做:
world->SetContactListener(&ContactListenerInstance);
希望对您有所帮助。