Collision detection fail with cocos2d v3 & chipmunk

Official forum for the Chipmunk2D Physics Library.
Post Reply
jocomojo
Posts: 4
Joined: Sat Mar 15, 2014 10:07 pm
Contact:

Collision detection fail with cocos2d v3 & chipmunk

Post by jocomojo »

Hello
First try at Chipmunk.

Not getting collision detection registering is the problem.

My code:

Code: Select all

@implementation MainPlayScene
{
    CCPhysicsNode *_physics;
    CCNode *MyPhysicsBody;
    CCNode *bottomBody;

}

+ (instancetype)scene
{
    return [[self alloc] init];
}

- (instancetype)init
{
// Apple recommend assigning self with supers return value, and handling self not created
    self = [super init];
    if (!self) return(nil);

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

 /// BOTTOM
    CGRect bottomRect = CGRectMake(0, 0, [CCDirector sharedDirector].viewSize.width, 10);
    bottomBody = [CCNode node];
    bottomBody.physicsBody = [CCPhysicsBody bodyWithPolylineFromRect:bottomRect cornerRadius:0];
    bottomBody.physicsBody.collisionCategories = @[@"Bottom"];
    bottomBody.physicsBody.type = CCPhysicsBodyTypeStatic;
    [_physics addChild:bottomBody];

 /// MyBody to bounce around
    MyPhysicsBody = [CCSprite spriteWithImageNamed:@"MyBody-64x64-24.png"];
    MyPhysicsBody.position = ccp((self.contentSize.width/2),(self.contentSize.height/2));
    MyPhysicsBody = [CCNode node];
    MyPhysicsBody.physicsBody = [CCPhysicsBody bodyWithRect:(CGRect){CGPointZero,  MyPhysicsBody.contentSize.height,MyPhysicsBody.contentSize.width} cornerRadius:0];
    MyPhysicsBody.physicsBody.collisionCategories = @[@"MyBody"];
    [_physics addChild:MyPhysicsBody z:150];

    self.userInteractionEnabled = YES;
    return self;
}
Detecting touch events and applying force to physics body to have it bounce up and down onto bottom body

Code: Select all

- (void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{   
    CCLOG(@"Touch Detected");
    [MyPhysicsBody.physicsBody applyImpulse:ccp(0, 300.f)];
}
Now I try to detect a collision on “Bottom” but nothing is being registered even though I see debug lines of 2 objects touch.

Code: Select all

/// try onCollisionEnter first ... nothing 
-(void)onCollisionEnter:(CCNode *)entity collisionPair:(CCPhysicsCollisionPair *)pair
{
    if ([entity.physicsBody.collisionCategories  isEqual: @"Bottom"]) {
        CCLOG(@"Hit bottomBody");
    }

}

/// try ccPhysicsCollisionBegin pair ... nothing
-(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair MyBody:(CCNode *) MyBody Botton:(CCNode *)Bottom
{
     CCLOG(@"Hit bottomBody");
     return TRUE;
}

Obviously I’m missing something critical here …

Any help is VERY appreciated!

Thanks
jocomojo
Posts: 4
Joined: Sat Mar 15, 2014 10:07 pm
Contact:

Re: Collision detection fail with cocos2d v3 & chipmunk

Post by jocomojo »

I didn't have the

Code: Select all

_physics.collisionDelegate = self; 


which was the problem just FYI
Post Reply

Who is online

Users browsing this forum: No registered users and 8 guests