2017-11-14 17 views
2

내가 만나는 문제는 접촉을 감지하기 위해 만든 코드가 작동하지 않는다는 것입니다. 나는 공 카테고리가 장애 카테고리를 만지면 작동하기를 원했습니다. 내 코드에 어떤 문제가 있습니까? 정말 고마워요, 어떤 도움을 주셔서 감사합니다!내 코드가 내 SKPhysicsBody와의 접촉을 감지하지 못하는 이유는 무엇입니까?

: 나는 장애물의 물리적 측면을 만들

leftBall.physicsBody = SKPhysicsBody(rectangleOf: leftBall.size) 
    leftBall.physicsBody?.categoryBitMask = ballCategory 
    leftBall.physicsBody?.contactTestBitMask = obstacleCategory 
    leftBall.physicsBody?.affectedByGravity = false 
    leftBall.physicsBody?.isDynamic = false 
    leftBall.physicsBody?.collisionBitMask = 0 

을 Heres : 내 볼의 물리적 측면을 만들 Heres는

let ballCategory : UInt32 = 0x1 << 1 
let obstacleCategory : UInt32 = 0x1 << 2 

: 나는 범주를 정의

을 Heres

obstacleSquare.physicsBody = SKPhysicsBody(rectangleOf: obstacleSquare.size) 
    obstacleSquare.physicsBody?.categoryBitMask = obstacleCategory 
    obstacleSquare.physicsBody?.contactTestBitMask = ballCategory 
    obstacleSquare.physicsBody?.affectedByGravity = false 
    obstacleSquare.physicsBody?.isDynamic = false 
    obstacleSquare.physicsBody?.collisionBitMask = 1 

내 충돌 감지 기능 :

func didBegin(_ contact: SKPhysicsContact) { 

    print("CONTACT") 

    if contact.bodyA.categoryBitMask == obstacleCategory { 

     print("CONTACT") 
     gameOver() 

    } 

    if contact.bodyB.categoryBitMask == obstacleCategory { 

     print("CONTACT") 
     gameOver() 

    } 

    if contact.bodyA.categoryBitMask == ballCategory { 

     print("CONTACT") 
     gameOver() 

    } 

    if contact.bodyB.categoryBitMask == ballCategory { 

     print("CONTACT") 
     gameOver() 

    } 

} 

답변

1

개체의 물리 본문 모두 isDynamic 속성이 false로 설정되어 있습니다. 적어도 하나는 등록 할 연락처에 대해이 속성을 true로 설정해야합니다.

+0

정말 고마워요. – Justin