2011-10-31 49 views
1

我正在使用Cocos2d和Box2d爲iPad和iPhone製作平臺遊戲。 我在跳躍時加入了一些特殊功能,我需要知道我的角色何時應該被允許跳躍。僅在圓圈底部識別聯繫人。 Cocos2d與Box2d

目前我正在使用ContactManager來檢查玩家(一個圓圈)與其他物體之間的碰撞。這樣我可以告訴我的角色,他只有在他與另一個物體接觸時才允許跳躍。

問題是我不希望他能夠跳牆...... 我想知道我的角色是否與我的圈子底部的另一個對象接觸!當他的腳踏在地上時,他應該只能跳起來。不是他的臉...

我應該如何解決這個問題?

+0

檢查接觸點是否在字符的底部? – Andrew

+0

是的。我想知道這些角色是否在他的腳下着陸...... –

回答

1

你可以得到的聯絡點清單如下:

b2Manifold* manifold = contact->GetManifold(); 
for (int i = 0; i < manifold.pointCount; i++) 
{ 
    b2ManifoldPoint point = manifold.points[i]; 
    // rest see text … 
} 

現在,在理論上,所有你需要做的是檢查是否有在您的播放圈的最底部區域的至少一個點。這意味着如果一個接觸點的x位置在大約正負圓半徑的一半範圍內,並且y位置小於圓體的y位置,那麼您在地平面某處發生了圓形碰撞。

+0

非常感謝!我會盡快嘗試。 –

+0

對不起。我沒有得到這個工作。 如何繼續獲得我的b2bodies的正確位置,寬度和高度? –

+0

b2Body * bodyA = contact-> GetFixtureA() - > GetBody(); bodyB也一樣。然後,您可以使用身體的位置等屬性。 – LearnCocos2D