2013-10-01 2 views
4

Apple Sprite Kit를 사용하여 작은 게임을 쓰고 있습니다.두 가지 유형의 SpriteKit 노드가 서로 충돌하지 않도록하려면 어떻게해야합니까?

충돌 문제가 있습니다. 때때로 physicsBodys가있는 두 개의 skSpriteNodes가 상호 작용하기를 원하지 않습니다.

예를 들어 나는 영웅, 에너메스, 슛을 가지고 있으며, 숏은 ENEMYS와 만 상호 작용하기를 원합니다.

그러나 2 발이 서로 충돌하면 위치가 바뀝니다.

촬영에 대한 코드는

shot.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:shot.size]; 
    shot.physicsBody.dynamic = YES; 
    shot.physicsBody.allowsRotation = FALSE; 
    shot.physicsBody.categoryBitMask = playerShotCategory; 
    shot.physicsBody.contactTestBitMask = enemyCategory; 

그리고 당신은 원수와 상호 작용 샷을 원하는 경우에 적 용 코드는이 코드를 추가해야합니다,

activeGameObject.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:activeGameObject.size]; 
    activeGameObject.physicsBody.dynamic = YES; 
    activeGameObject.physicsBody.categoryBitMask = enemyCategory; 
    activeGameObject.physicsBody.contactTestBitMask = playerCategory | playerShotCategory; 
    activeGameObject.physicsBody.allowsRotation = FALSE; 
+3

'playerShotCategory','enemyCategory' 및 'playerCategory'는 무엇입니까? –

답변

6

입니다 :

shot.physicsBody.collisionBitMask = enemyCategory; 
activeGameObject.physicsBody.collisionBitMask = playerShotCategory|playerCategory; 

자세한 내용은 documentation for collisionBitMask을 참조하십시오. 충돌과 관련된 다른 범주가있는 경우 collisionBitMask를 조정해야 할 수도 있습니다.

+0

정말 고마워. 나는. collisionbitmask의 의미를 이해하지 못했다. – tallis

관련 문제