2014-10-09 3 views
1

다른 스프라이트를 만질 때 스프라이트 자체를 삭제하고 싶습니다. 그들이 만질 때, 그들은 단지 서로 밀어냅니다.초보자 신속한 스프라이트 키트 - 노드 충돌 감지 도움말 (SKPhysicsContact)

나는이있다 :

let alphaCategory: UInt32 = 0x1 << 0 
let betaCategory: UInt32 = 0x1 << 1 

내가 동적 아니라 중력에 의해 영향을받는 스프라이트를 만들어

self.physicsworld.contactDelegate = self 

alpha.physicsBody?.categoryBitMask = alphaCategory 
alpha.physicsBody?.contactTestBitmask = betaCategory 

beta.physicsBody?.categoryBitMask = betaCategory 
beta.physicsBody?.contactTestBitmask = alphaCategory 
내가 만든 신속한에서 아무것도 찾을 수 없습니다

나에게 감각이 있지만 문제는 여기에 있다고 생각합니다

func didBeginContact(contact: SKPhysicsContact) { 

    var firstBody: SKPhysicsBody 
    var secondBody: SKPhysicsBody 

    if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask { 
     firstBody = contact.bodyA 
     secondBody = contact.BodyB 
     beta.removeFromParent() 
    } 
} 
+0

contact.bodyA가 베타 스프라이트가되면 코드가 실행되지 않습니다. – meisenman

답변

1

먼저 자신의 collisionBitMask의 순서로 firstBody & secondBody을 설정해야 . 당신이 다른 비트 마스크 속성을 설정하는 곳을 설정하십시오 SpritKit 게임을 작업 할 때 나는 지난 여름에 발견으로이 실제로 문제를 일으킬 수

alpha.physicsBody.collisionBitMask = 0 
beta.physicsBody.collisionBitMask = 0 
+0

연락처 이벤트 전용 섹션이있는 다음 자습서를 참조하십시오. 그것은 정확히 당신이 찾고있는 것을 수행합니다 ... 두 객체가 충돌 할 때 그것들 중 하나가 제거됩니다. 개인적으로 튜토리얼에서 다루는 방법을 선호합니다. 방금 논리를 포함 시켰습니다. http://www.raywenderlich.com/42699/spritekit-tutorial-for-beginners – meisenman

+0

감사합니다. collisionBitMask가 매우 좋습니다! – wanksta11

+0

그래, 그 튜토리얼을 보았지만 신속하게 작동하지 않을 것이라고 생각했습니다. – wanksta11

0

시도 : 이것은 아무것도 충돌에서 스프라이트를 방지 할 수

if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask 
    { 
     firstBody = contact.bodyA 
     secondBody = contact.bodyB 
    } 
else { 
     firstBody = contact.bodyB 
     secondBody = contact.bodyA 
    } 

if firstBody.categoryBitMask=0 && secondBody.categoryBitMask=1 { 
     secondBody.removeFromParent() 
} 

(서로 포함) :

secondBody = contact.bodyB 
1

. SKPhysicsContact 콜백 중 장면의 노드 구조를 수정하면 결과가 Apple에 따라 정의되지 않습니다. 이 문제를 제기 한 후에 내가 말한 것은 콜백 내부에서 장면 Node 구조를 절대 수정해서는 안된다는 것입니다. 대신, 애플은 단순히 플래그를 설정하고 안전한 곳에서 업데이트 루프의 장면 수정을 처리한다고 말합니다.

관련 문제