2013-10-18 34 views
0

ccsprite的我在做一個遊戲,一個人物有一定的動畫一樣運行碰撞,跳躍等,如何檢測動畫中的Box2D

有什麼方法來檢測碰撞,而這是動畫?因爲它處於空閒狀態,跑步和跳躍狀態時正在改變其形狀。

雖然我尋找解決辦法,我成立這兩個Sprite Helper

Physics Editor

回答

0

最好的辦法是自己定義邊框的精靈,並決定具體的尺寸,以測試它針對您的級別其他形狀。

否則,您可以使用屬性sprite.boundingBox,它將返回實際精靈的CGRect,但我認爲這與根據CCNode樹的當前轉換堆棧有關。它在很多情況下都有效,但如果動畫階段的大小變化很大,則不會。

所以,選擇一個特定的邊框:

CGSize playerBounds = CGSizeMake(20,20); 
CGRect bound = CGRectMake(player.position.x, player.position.y, playerBounds.width, playerBounds.height); 
// or CGRect bound = player.boundingBox 

測試對你的水平:

for (CCSprite *levelPiece in pieces.children) { 
    if (CGRectIntersectsRect(bound, levelPiece.boundingBox)) { 
    // they're colliding 
    } 
} 
+0

如果我用包圍盒,我可以發現任何碰撞。但我想在box2d形狀中檢測碰撞。我有10幀用於運行動畫。每個框架具有不同的形狀與腿身角度,手在不同的角度。我已經定義了所有框架的主體並相應地進行了更改但這不是一個有效的想法。所以我需要一個優化的方法來精確地確定box2d中的碰撞或者只是使用 –

+0

只需要使用一個粗略的碰撞階段,在這個階段中,您可以測試大邊界框來查看是否有可能的碰撞,然後用一個精細的碰撞檢測階段來檢查它們,但將在較少的數據上完成。 – Jack