func didBeginContact(contact: SKPhysicsContact) {
if (contact.bodyA.categoryBitMask & BodyType.shield.rawValue) == BodyType.shield.rawValue {
contact.bodyB.node?.removeFromParent()
counter++
println(counter)
} else if (contact.bodyB.categoryBitMask & BodyType.shield.rawValue) == BodyType.shield.rawValue {
contact.bodyA.node?.removeFromParent()
counter++
println(counter)
}
}
한 물리학 몸 텍스처에서입니다 같은 SKPhysicsBody에 대한 여러 번 호출되는 shield.physicsBody = SKPhysicsBody(texture: shieldTexture, size: shieldTexture.size())
다른 하나는 원 sand.physicsBody = SKPhysicsBody(circleOfRadius: sand.size.width/2)
didBeginContact는
견인 때때로 sand.physicsBody = SKPhysicsBody(circleOfRadius: sand.size.width/2)
가 호출되는 서로 접촉을 객체에서입니다
여러 번. 접촉하는 즉시 부모로부터 제거하더라도 각 객체에 대해 한 번만 호출되도록하는 방법은 무엇입니까?
텍스처의 본문이 내부적으로 여러 모양을 생성 할 수 있으므로 각각이 연락처 이벤트를 유발할 수 있으므로 의도 한대로 작동한다고 생각합니다. 노드를 제거해도 물리 시뮬레이션 단계가 끝날 때까지는 본문이 제거되지 않습니다. 노드 또는 본문을이 연락처 이벤트에서 처리 된 것으로 수동으로 "표시"하여 동일한 본문의 후속 연락처 이벤트를 건너 뛸 수 있도록해야합니다. – LearnCocos2D
SKPhysicsBody가 텍스처를 통해 매개 변수를 통해 설정할 수있는 옵션이 있었기를 바랍니다. circleOfRadius의 SKPhysicsBody는 하나의 히트/접촉 만 계산합니다. 아래의 답변을 포함하여 추가 논리를 만드는 것보다 훨씬 많은 경우가 있습니다. 또한 필요하지 않은 경우 더 많은 연락처를 검색하지 못하도록 리소스를 절약 할 수 있습니다. –