2016-01-03 30 views
1

我是Box2D的新手,我試圖通過使用b2Contact來檢測對象(Ball)是否設法通過另一個對象(目標)。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?

回答

1

嘗試將您創建的Goal對象設置爲您的世界中ContactListener類的對象。 (我假設你沒有這樣做,因爲你沒有提到它。)

你可以做這樣的事情:

world->SetContactListener(&ContactListenerInstance); 

希望它能幫助。

+1

你是對的!愚蠢的我。謝謝 :) –