/ méthode de collision entre le tamia et le cocos2d v3 ne se déclenche pas - cocos2d-iphone, détection de collision, détection, tamia à puce

méthode de collision cocos2d v3 chipmunk ne tire pas - cocos2d-iphone, détection de collision, détection, tamia

ok donc je "nage un peu avec chipmunk, et je peux faire rebondir deux sprites, mais quand j'essaie d'utiliser la méthode suivante, ça ne se déclenche jamais,

-(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair tower:(CCNode *)nodeA BG:
(CCNode *)nodeB
{
NSLog(@"HELLO");
return YES;
}

Voici où je crée le nœud de physique:

    _physics = [CCPhysicsNode node];
_physics.debugDraw = YES;
[self addChild:_physics z:1];
_physics.collisionDelegate = self;

J'utilise ce code pour créer le premier sprite:

    background = [CCSprite spriteWithImageNamed:gameLevelImage];
[background setPosition:ccp(winSize.width/2,winSize.height/2)];
background.physicsBody.collisionType = @"BG";
background.physicsBody = [CCPhysicsBody bodyWithCircleOfRadius:50 andCenter:self.position];

et ceci pour l'autre:

    tower = [[TowerType alloc] initWithTheGame:self location:ccp(winSize.width/2, winSize.height/2)];
[towers addObject:tower];
[self MenuItemsVisible];
tower.physicsBody = [CCPhysicsBody bodyWithCircleOfRadius:50 andCenter:tower.position];
tower.physicsBody.collisionType = @"tower";

J'ai aussi le protocole dans le fichier h.

si quelqu'un sait ce qui se passe, l'aide serait grandement appréciée. (:

Réponses:

1 pour la réponse № 1

Tout d'abord, les deux corps sont-ils sous le même CCPhysicsNode?

Deuxièmement, ccPhysicsCollisionBegin s’appelle simplementlorsque la collision COMMENCE, alors que vos deux corps se superposent et qu'ils vont se déplacer ensemble en raison de la gravité, la collision ne commencera jamais, car ils ont commencé à entrer en collision. Le cycle d'évaluation des collisions est le suivant:

ccPhysicsCollisionBegin: appelé une fois que les deux corps commencent à entrer en collision
ccPhysicsCollisionPreSolve: appelé chaque mise à jour de cadre, avant les calculs de physique
ccPhysicsCollisionPostSolve: appelé chaque image, après des calculs physiques
ccPhysicsCollisionSeparates: appelés une fois séparés


0 pour la réponse № 2

Assurez-vous que vos sprites sont correctement alloués avant d'essayer de définir le type de collision. C'était le problème pour moi dans mon cas similaire.