2015-08-18 10 views
0

Я занимаюсь стрельбой, проблема в том, что, когда пуля сталкивается с врагом и вызывает оценку обновления функции, они называют функцию примерно 10 раз, heres my didBeginContact:столкновение обнаружено более одного раза

func didBeginContact(contact: SKPhysicsContact) { 
    var firstBody :SKPhysicsBody 
    var secondBody :SKPhysicsBody 

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


    if (firstBody.categoryBitMask == CollisionCategories.Bullet) && 
     (secondBody.categoryBitMask == CollisionCategories.Enemy) { 

      println("Hit") 
      firstBody.node!.removeFromParent() 
      secondBody.node!.removeFromParent() 
      //change score 
      updateScore(1) 

    } 
} 

ответ

0

Проблема у меня была в том, что у Enemy был свой физический элемент, сконфигурированный как текстура размера, изменив его с текстуры на circleOfRadius, работал отлично.

От:

Enemy.physicsBody = SKPhysicsBody(texture: texture, size: texture.size()) 

To:

Enemy.physicsBody = SKPhysicsBody(circleOfRadius: (Enemy.size.width/2)) 
Смежные вопросы