2014-02-22 41 views
0

我正在做一個遊戲(用Cocos2d 3.0和SpriteBuilder),其中一個角色粉碎另一個並獲得衝動。要做到這一點,我嘗試以下:如何在物體碰撞另一個物體後施加衝量? [Chipmunk]

-(BOOL)ccPhysicsCollisionPreSolve:(CCPhysicsCollisionPair *)pair hero:(CCNode *)hero goal:(CCNode *)goal { 
    [hero.physicsBody applyImpulse:ccp(0.0f, 9000)]; 
    return TRUE; 
} 

而且也:

-(void)ccPhysicsCollisionPostSolve:(CCPhysicsCollisionPair *)pair hero:(CCNode *)hero goal:(CCNode *)goal { 
    [hero.physicsBody applyImpulse:ccp(0.0f, 9000)]; 
} 

但是,當碰撞方法被調用時,角色並不總是收到的衝動。我也試過,包括以下內部 「PostSolve」(How to make a dynamic body static in Cocos2d v3.0 with Chipmunk):

[[_physicsNode space] addPostStepBlock:^{ 
     [hero.physicsBody applyImpulse:ccp(0.0f, 9000)]; 
    } key:hero]; 

...但我也有同樣的結果。你有任何建議嗎?謝謝。

回答

0

在v3 rc1中,在應用衝動中出現了一個相當令人尷尬的複製粘貼錯誤。但它在RC2中得到修復。

+0

其實我正在使用RC2。我還包括了Github的最新變化:' - (void)applyImpulse:(CGPoint)impulse {_body.velocity = cpvadd(_body.velocity,cpvmult(CCP_TO_CPV(impulse),1.0f/_body.mass));}' – Jesod

+0

OK @slembcke這真的很奇怪。我用GitHub版本取代了CCPhysicsBody,CCPhysicsNode和CCPhysics + ObjectiveChipmunk,並且在模擬器中一切正常,但不適用於iPhone 5。 – Jesod