私はスプライトキットを使って簡単なゲームを作ろうとしています。 基本的な考え方は、ブロックを回避するためにジャンプすることができる1人のプレイヤーがいることです。 しかし、私は問題を抱えています。プレイヤーがブロックに当たってプレイヤーが消えて血のアニメーションが始まると、それをどうやって作るのか分かりません。 まず、私はこのコードがリンゴのウェブサイトで見つけたことを理解していません。スプライトキットの衝突を検出する
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を理解していません行う。 私はその作業をしてから、キャラクターをスクリーンと血行アニメーションが消えるようにしたいと思っていますが、どうしたらいいか分かりません。私はあなたが何かをしなければならないと思う: if(_player & & _block didcollide){ } しかし、私はそれを正確に行う方法を知らない。
この回答を見るhttp://stackoverflow.com/questions/22495285/sprite-kit-collision-detection – Jeff