2
내 didBeginContact 함수는 두 개의 SKSpriteNode 사이에 약 60 개의 충돌이있을 경우에만 감지합니다.내 didBeginContact 함수가 너무 많은 충돌을 감지하는 이유는 무엇입니까?
func didBeginContact(contact: SKPhysicsContact) {
let firstBody = contact.bodyA
let secondBody = contact.bodyB
if firstBody.categoryBitMask == bulletCategory && secondBody.categoryBitMask == dragonCategory || firstBody.categoryBitMask == dragonCategory && secondBody.categoryBitMask == bulletCategory{
print("collision happened")
}
}
노드가 접촉하면 콘솔은 "충돌이 발생했습니다"라는 메시지를 여러 번 인쇄합니다. 여기
내가 각 SKSpriteNode
dragonNode.physicsBody = SKPhysicsBody(texture: dragonNode.texture!, size: CGSizeMake(dragonNode.size.width, dragonNode.size.height))
dragonNode.physicsBody?.affectedByGravity = false
dragonNode.physicsBody?.dynamic = true
dragonNode.physicsBody?.categoryBitMask = dragonCategory
dragonNode.physicsBody?.collisionBitMask = bulletCategory
dragonNode.physicsBody?.contactTestBitMask = bulletCategory
bulletNode.physicsBody = SKPhysicsBody(texture: texture, size: texture.size())
bulletNode.physicsBody?.affectedByGravity = false
bulletNode.physicsBody?.dynamic = true
bulletNode.physicsBody?.categoryBitMask = bulletCategory
bulletNode.physicsBody?.collisionBitMask = dragonCategory
bulletNode.physicsBody?.contactTestBitMask = dragonCategory
이 내가 완료 될 때까지 내 게임에 대한 수정해야 마지막 것들 중 하나 누군가가 그 좋은 것입니다 도움이 될 수 있습니다, 그래서 만약 때문이다 물리학 신체의를 선언하는 방법입니다!
내가 dragonNode.collided을 설정해야합니까 번 발사 이런 식으로 이 값을 재설정하려면 false로 설정 하시겠습니까? –
거기에 할 수있는 코드 예제를 추가했습니다. 분명히 쓸 수있는 ("충돌"과 같은) dragonNode에 대한 속성을 만들거나 검사를 위해 쓸 다른 변수를 찾아야합니다. 탐지를 나중에 다시 감지 할 수 있도록 변수를 재설정하는 방법을 찾아야합니다. –
정말 감사합니다. –