-3

古いプロジェクトでは、この質問のように衝突を作成します: なぜ衝突が機能しないのか、cocos2d v3? . 正常に実行されましたが、新しいプロジェクトを作成したときに何か問題がありました。今回は何が違うのかわかりません。私を助けてください。

-(void)addAIAction:(int)i{
    if (!arrAI) {
        arrAI = [[NSMutableArray alloc]init];
    }
    CCSprite *sprite = [CCSprite spriteWithImageNamed:@"res/gu_button.png"];
    sprite.position = [GameConfig convertPoint:ccp(viewSize.width, 160)];
    sprite.physicsBody.collisionType=@"aiCollision";
    sprite.physicsBody = [CCPhysicsBody bodyWithCircleOfRadius:sprite.contentSize.width/2 andCenter:ccp(sprite.contentSize.width/2, sprite.contentSize.height/2)];
    sprite.physicsBody.type = CCPhysicsBodyTypeDynamic;
    [_physicsNode addChild:sprite];
    [arrAI addObject:sprite];
}

// ------------------------------------------------ -----------------------

-(void)update:(CCTime)delta{
    for (CCSprite *sp in arrPlayer) {
        sp.position= ccp(sp.position.x+playerSpeed, sp.position.y);
    }
    for (CCSprite *sp in arrAI) {
        sp.position= ccp(sp.position.x-aiSpeed, sp.position.y);
    }

デリゲートを実装します。

-(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair  playerCollision:(CCNode *)nodeA aiCollision:(CCNode *)nodeB{
    NSLog(@"Coll.");


- (id)init
{
    // Apple recommend assigning self with supers return value
    self = [super init];
    if (!self) return(nil);

    viewSize=CGSizeMake([GameConfig converPoint:480], [GameConfig converPoint:320]);
    _physicsNode = [CCPhysicsNode node];
    _physicsNode.collisionDelegate =self;
    _physicsNode.debugDraw =YES;
    _physicsNode.gravity=ccp(0, 0);

「 ccPhysicsCollisionBegin 」がみんなに感謝しない理由を教えてください

4

1 に答える 1

1

物理ボディのデリゲートを設定したと言う証拠がないため、ccPhysicsCollisionBegin メソッドが呼び出されない可能性があります。

V3 についてはわかりませんが、以下を追加する必要があると思います。

sprite.phisicsBody.deligate = self;

に電話[_physicsNode addChild:sprite];する前にaddAIAction:

于 2014-05-21T23:56:23.957 に答える