1
我正在嘗試創建一個塊可以移動的遊戲,它們都屬於同一個categoryBitMask。除非將physicsBody設置爲動態,否則didBeginContact不會觸發。如何檢測屬於同一類別的兩個塊之間的碰撞?SpriteKit didBegin與2個非動態物體的聯繫問題
生成塊代碼:
float blkX = 34;
float blkY = 64;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 6; j++){
block = [SKSpriteNode spriteNodeWithImageNamed:blocksArray[(arc4random()%5)]];
block.position = CGPointMake(blkX, blkY);
block.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:block.size];
block.physicsBody.usesPreciseCollisionDetection = YES;
block.physicsBody.dynamic = NO;
block.physicsBody.categoryBitMask = blockCategory;
block.physicsBody.contactTestBitMask = blockCategory;
block.physicsBody.collisionBitMask = blockCategory;
[block setName:@"block"];
[_bgLayer addChild:block];
blkX += 48;
}
blkX = 34;
blkY += 48;
}
我使用的SKPhysicsContactDelegate並具有以下在我的init()方法的兩行:
self.physicsWorld.contactDelegate = self;
self.physicsWorld.gravity = CGVectorMake(0.0, 0.0);
我didBeginContact方法:
-(void)didBeginContact:(SKPhysicsContact *)contact{
SKPhysicsBody *firstBody, *secondBody;
firstBody = contact.bodyA;
secondBody = contact.bodyB;
NSLog(@"We Collided!");
}
任何幫助表示讚賞。謝謝!
兩個非動態物體永遠不會產生接觸事件。既然你已經知道了這一點,並從你的評論我認爲它的工作,我想知道你的問題是什麼? – LearnCocos2D