2016-10-25 5 views
0

알았어 검색 한 결과이 문제에 대한 답을 찾을 수 없습니다. 충돌을 처리 할 노드 유형이 3 가지 있습니다. 유성, 발사 및 역. 나는 샷과 유성 사이의 충돌 처리 코드를 완벽하게 작동하지만, 나는 내 삶에 대해 충돌에 대응하는 방법을 알아낼 수 없다 (예 : 충돌이 감지되었지만 응답 코드가 실행되지 않음). 역 및 운석. ! "충돌"3 가지 충돌 시체? Swift3 + Spritekit

func didBegin(_ contact: SKPhysicsContact){ 
    print("contact") 
    let shot = (contact.bodyA.categoryBitMask == shotCategory) ? contact.bodyA : contact.bodyB 
    let stationBody = (contact.bodyA.categoryBitMask == stationCategory) ? contact.bodyA : contact.bodyB 
    let otherObject = (shot == contact.bodyA) ? contact.bodyB : contact.bodyA 

    if ((contact.bodyA == stationBody) && (contact.bodyB == otherObject)) { 
     print("collision!") 
    } 
} 

"접촉"유성 역와 충돌하지만, 경우에 인쇄되는 : 여기 내 didBegin의 FUNC의 인쇄되지 않습니다. 나는 코드가 모호하게되는 방식과 그것의 가지고 뭔가를 알고 있지만 나는 그것을 상관없이 내가 작성하는 방법 작동하지 얻을 수없는 것/다시 그것을

답변

0

... 순서를 고려하십시오

if (contact.bodyA == stationBody && contact.bodyB == otherObject) || (contact.bodyB == stationBody && contact.bodyA == otherObject) 

또한 샷에 따라 다른 오브젝트를 설정하므로 샷이 충돌의 오브젝트 중 하나가 아닌 경우 문제가 될 수 있습니다.

bodyA가 다른 오브젝트이고 bodyB가 스테이션 예를 들어 샷이 설정되면 bodyB (categoryBitMask! = shotCategory) 때문에 otherObject가 bodyA로 설정됩니다. 따라서 contact.bodyB는 otherObject와 같지 않습니다.

+0

감사합니다. 나는 집에 도착했을 때 그것을 확실히 시도해 볼 것인가? –

+0

이 어떻게 효과를 냈는지 알 수있다. 도와 주셔서 감사합니다 –