我想用sprite套件做一個簡單的遊戲。 其基本思想是有一名玩家可以跳躍以避開積木。 但是我有一個問題,我不知道如何讓玩家擊中區塊時玩家消失,血液動畫開始。 首先,我不明白這個代碼在蘋果網站上發現了什麼。探測sprite套件中的衝突
static const uint32_t blockCategory = 0x1 <<0;
static const uint32_t playerCategory = 0x1 <<1;
比我打電話didBeginContact函數,並在其中放入一個NSLOG(「did call function」)。 但我從來沒有收到我的調試器的輸出。
這是我_player和_block代碼: - (SKSpriteNode *)字符{
_player = [SKSpriteNode spriteNodeWithImageNamed:@"soldier_run1"];
_player.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:_player.size.width /2 -5];
_player.physicsBody.dynamic = YES;
_player.physicsBody.usesPreciseCollisionDetection = YES;
_player.physicsBody.friction = 0;
_player.physicsBody.categoryBitMask = playerCategory;
_player.physicsBody.collisionBitMask = blokCategory;
_player.name = @"player";
SKAction *animAction = [SKAction animateWithTextures:playerTextures timePerFrame:0.1 resize:YES restore:YES];
我_player代碼:
[_player runAction:[SKAction repeatActionForever:animAction]];
return _player;
}
-(SKSpriteNode *)block {
_blok = [[SKSpriteNode alloc] initWithColor:[SKColor blackColor] size:CGSizeMake(15, 40)];
//physics
_blok.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:_blok.size];
_blok.physicsBody.dynamic = NO;
_blok.name = @"block";
_blok.physicsBody.categoryBitMask = blokCategory;
_blok.physicsBody.collisionBitMask = playerCategory;
SKAction *moveBlock = [SKAction sequence:@[
[SKAction moveToX:-20 duration:2] ]];
[_blok runAction:moveBlock ];
return _blok;
}
而且我真的不明白什麼categoryBitMask和collisionBitMask做。 我有這個工作後,我想讓角色從屏幕上消失,血液動畫開始,但我不知道如何讓這種情況發生。我認爲你必須這樣做: 如果(_player & & _block didcollide){ } 但我不知道如何做到這一點。
看到這個答案http://stackoverflow.com/questions/22495285/sprite-kit-collision-detection – Jeff