/ El método de colisión del chipmunk / cocos2d v3 no se dispara: cocos2d-iphone, detección de colisiones, detección, ardilla

El método de colisión de chipmunk cocos2d v3 no se dispara: cocos2d-iphone, detección de colisiones, detección, ardilla

ok, he estado jugando con la ardilla un poco, y puedo hacer que dos sprites reboten entre sí, pero cuando intento usar el siguiente método, nunca se dispara,

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

Aquí es donde creo el nodo de física:

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

Utilizo este código para crear el primer 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];

Y esto por el otro:

    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";

También tengo el protocolo en el archivo h.

Si alguien sabe qué está pasando, la ayuda sería muy apreciada. (:

Respuestas

1 para la respuesta № 1

En primer lugar, ¿están ambos cuerpos bajo el mismo Nodo de Física CC?

Segundo, ccPhysicsCollisionBegin se llama simplementecuando comience la colisión, por lo que ambos cuerpos están uno sobre el otro y, aparentemente, se moverán juntos debido a la gravedad, la colisión nunca comenzará, porque comenzaron a chocar. El ciclo de evaluación de colisiones es:

ccPhysicsCollisionBegin: se llama una vez que ambos cuerpos comienzan a chocar
ccPhysicsCollisionPreSolve: se llama a cada actualización de cuadros antes de los cálculos físicos
ccPhysicsCollisionPostSolve: llamado a cada fotograma, después de los cálculos físicos
ccPhysicsCollisionSeparates: se llama una vez que se separan


0 para la respuesta № 2

Asegúrese de que sus sprites estén asignados correctamente antes de intentar establecer el tipo de colisión. Ese fue el problema para mí en mi caso similar.