SpriteKit을 사용하여 게임을 만들고 충돌 감지에 문제가 발생했습니다. SKSpriteNode
, Player
및 Enemy
의 2 개의 하위 클래스가 있습니다. 그들은 서로 충돌을 감지해야합니다. 여기에 내가 Player
객체의 physicsBody
초기화하고 방법은 다음과 같습니다Spritekit 충돌 감지가 제대로 작동하지 않습니다.
self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:self.size];
self.physicsBody.affectedByGravity = NO;
self.physicsBody.dynamic = NO;
self.physicsBody.usesPreciseCollisionDetection = YES;
self.physicsBody.categoryBitMask = playerCategory;
self.physicsBody.collisionBitMask = enemyCategory;
self.physicsBody.contactTestBitMask = enemyCategory;
을 그리고 여기가 Enemy
객체의 physicsBody
초기화하고 방법은 다음과 같습니다
self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:self.size];
self.physicsBody.affectedByGravity = NO;
self.physicsBody.dynamic = NO;
self.physicsBody.usesPreciseCollisionDetection = NO;
self.physicsBody.categoryBitMask = enemyCategory;
self.physicsBody.collisionBitMask = playerCategory;
self.physicsBody.contactTestBitMask = playerCategory;
내 GameScene
구현 SKPhysicsContactDelegate
프로토콜을 가지고 있고 나는 그것의 INIT이이 :
self.physicsWorld.gravity = CGVectorMake(0.0, 0.0);
self.physicsWorld.contactDelegate = self;
그리고 아직까지 didBeginContact
메서드를 호출해야합니다. 객체가 씬에서 생성 된 후에도 아무것도 생성하지 않은 후에 physicsBodies
을 초기화하려고했습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
UPDATE 1
여기가 Prefix.pch
파일에 수입되는 Common.h
파일에의의 bitMasks
를 만드는 코드입니다.
static const uint32_t enemyCategory = 0x1 <<0;
static const uint32_t playerCategory = 0x1 <<1;
어디에서 어떻게 비트 마스크 범주 값을 설정 했습니까? 관련 코드를 게시하십시오. – ZeMoon
@akashg 질문을 편집했습니다. –
동적 속성을 YES로 설정하십시오. – ZeMoon