2011-08-30 28 views
0

我要製作一個類似於「Doodle Jump」的函數:球(dynamicbody)在與平臺(staticbody)相撞後跳轉。box2d,在與b2_dynamicbody碰撞時破壞b2_staticbody導致隧道效應

下面是如何實現此: 1.定義自己ContactListener:定義一個接觸陣列,其插入體同時BeginContact,擦除體而EndContact 2自scheduleupdate]遍歷觸點陣列,如果接觸的一個主體是一個平臺(staticbody),摧毀它。

問題是球在與平臺和平臺發生碰撞後不會跳躍。 球只會穿過前者的靜態物體。

任何人都可以幫忙嗎?

+0

它還挺很難理解你在做什麼試圖去做。平臺在被擊中時應該消失,對吧?所以球和平臺不再碰撞似乎很自然。 – iforce2d

回答

0

通常您會想使用b2_kinematicBody來模擬平臺,並將其設置爲LinearVelocity以使其移動。

鑑於滾動屏幕或跳球的錯覺,您可以使平臺移動。

爲了模擬反彈可以歸還設定的數值越接近1

要毀滅你可以設置一個簡單的contactListener平臺:

//in the end of update: method 

if (bodyASprite.tag == BALL_TAG && bodyBSprite.tag == PLAT_TAG) 
    world->DestroyBody(bodyB); 
else if (bodyASprite.tag == PLAT_TAG && bodyBSprite.tag == BALL_TAG) 
    world->DestroyBody(bodyA);