2017-11-14 15 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に:私は私のボールの物理学の側面を作成する相続人

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

:私はカテゴリを定義

相続人

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に設定されています。少なくとも1人は登録するすべての連絡先に対してこのプロパティをtrueに設定する必要があります。

+0

ありがとうございました – Justin

関連する問題