2016-06-25 2 views
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 

이 내가 완료 될 때까지 내 게임에 대한 수정해야 마지막 것들 중 하나 누군가가 그 좋은 것입니다 도움이 될 수 있습니다, 그래서 만약 때문이다 물리학 신체의를 선언하는 방법입니다!

답변

2

이론적으로 게임이 초당 60 프레임으로 실행되고 있기 때문입니다. 그래서 매초 60 분마다 충돌을 감지하고 경고를 인쇄합니다. 이 충돌을 감지하지 못하도록 코드를 작성하지 않았습니다. 당신은 항상 객체

dragonNode.collided = true 

에 플래그를 넣고 충돌 및 플래그에 대한 감지 할 수

if (firstBody.categoryBitMask == bulletCategory && secondBody.categoryBitMask == dragonCategory || firstBody.categoryBitMask == dragonCategory && secondBody.categoryBitMask == bulletCategory) && dragonNode.collided != true { 
    dragonNode.collided = true 
    print("collision happened") 
} 

충돌은

+0

내가 dragonNode.collided을 설정해야합니까 번 발사 이런 식으로 이 값을 재설정하려면 false로 설정 하시겠습니까? –

+0

거기에 할 수있는 코드 예제를 추가했습니다. 분명히 쓸 수있는 ("충돌"과 같은) dragonNode에 대한 속성을 만들거나 검사를 위해 쓸 다른 변수를 찾아야합니다. 탐지를 나중에 다시 감지 할 수 있도록 변수를 재설정하는 방법을 찾아야합니다. –

+0

정말 감사합니다. –

관련 문제