저는 스프라이트 키트로 간단한 게임을 만들려고합니다. 기본 아이디어는 블록을 피하기 위해 점프 할 수있는 한 명의 플레이어가 있다는 것입니다. 그러나 나는 플레이어가 블록을 치고 플레이어가 사라지고 혈액 애니메이션이 시작될 때 어떻게하는지 모르는 문제가 있습니다. 우선이 코드가 사과 웹 사이트에서 찾은 코드가 무엇인지 이해하지 못합니다.스프라이트 키트의 충돌 감지
static const uint32_t blockCategory = 0x1 <<0;
static const uint32_t playerCategory = 0x1 <<1;
나는 didBeginContact 함수를 호출하고 NSLOG ("호출 함수를 수행 했음")를 넣었습니다. 하지만 내 디버거에서 출력을받지 못했습니다. 여기
내 _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