Monday 15 August 2011

objective c - SpriteKit collision prevent from pushing out -



objective c - SpriteKit collision prevent from pushing out -

i have problem: have node , node b. want when collision between them happens (node collides top of b), node b won't pushing node a bit up. because now, when collides b, beingness pushed bit, , collision instantly ends(didendcontact called). when im colliding b, collision instantly ends, starts again, ends, starts again.... want if collided b, lay on b. noticed accomplish setting a.dynamic = no, need apply velocity a, , if not dynamic, velocity wont work.

this code:

typedef ns_options(uint32_t, collisioncategory) { collisioncategoryplayer = 1 << 0, collisioncategorydiggable = 1 << 1, }; -(void)didmovetoview:(skview *)view { self.playernode = [skspritenode spritenodewithimagenamed:@"player"]; self.playernode.physicsbody = [skphysicsbody bodywithrectangleofsize:self.playernode.size]; self.playernode.physicsbody.categorybitmask = collisioncategoryplayer; self.playernode.physicsbody.collisionbitmask = collisioncategorydiggable; self.playernode.physicsbody.contacttestbitmask = collisioncategorydiggable; self.playernode.position = cgpointmake(160, 520); self.playernode.name = @"player"; self.playernode.physicsbody.allowsrotation = no; self.playernode.physicsbody.friction = 0; [self addchild:self.playernode]; skspritenode* spritenode = [skspritenode spritenodewithtexture:texttouse]; spritenode.name = keyfromcoordinate(coord); spritenode.position = cgpointmake(160, 400); spritenode.physicsbody = [skphysicsbody bodywithrectangleofsize:spritenode.size]; spritenode.physicsbody.dynamic = no; spritenode.physicsbody.categorybitmask = collisioncategorydiggable; spritenode.physicsbody.collisionbitmask = collisioncategoryplayer; spritenode.physicsbody.contacttestbitmask = collisioncategoryplayer; spritenode.physicsbody.resting = yes; [self addchild:spritenode]; } -(void)update:(nstimeinterval)currenttime { self.playernode.physicsbody.velocity = cgvectormake(0, -200); }

and 1 time again problem didbegincontact called, didendcontact, didbegin , on, want - did begin called once.

setting restitution = 0 both physicsbodies helped

objective-c sprite-kit collision-detection skphysicsbody

No comments:

Post a Comment