2017-09-01 4 views
0
class GameScene: SKScene, SKPhysicsContactDelegate { 

let balls = [ 
    SKSpriteNode(imageNamed: "blueball.png"), 
    SKSpriteNode(imageNamed: "greenball.png"), 
    SKSpriteNode(imageNamed: "realredball.png") 
] 


let redRectangle = SKSpriteNode(imageNamed: "redrectangle.png") 
let blueRectangle = SKSpriteNode(imageNamed: "bluerectangle.png") 
let greenRectangle = SKSpriteNode(imageNamed: "greenrectangle.png") 

override func didMove(to view: SKView) { 
    spawnBalls() 
    rectangles() 
    physicsWorld.contactDelegate = self 

} 
override func touchesBegan(_ touches: Set<UITouch>, with event:  UIEvent?) { 
     for ball in balls{ 
      ball.physicsBody = SKPhysicsBody() 
      ball.physicsBody?.affectedByGravity = true 
      } 
    } 

func spawnBalls() { 

    let ball = balls[Int(arc4random_uniform(UInt32(balls.count)))] 
    ball.physicsBody = SKPhysicsBody() 
    ball.physicsBody?.affectedByGravity = false 
    ball.position = CGPoint(x: 0, y: 250) 
    ball.size = CGSize(width: 70, height: 70) 
    ball.physicsBody?.categoryBitMask = 0 
    ball.physicsBody?.collisionBitMask = 1 
    self.addChild(ball) 
} 

func rectangles() { 
    redRectangle.position = CGPoint(x: -316.5, y: -657) 
    redRectangle.size = CGSize(width: 400, height: 20) 
    redRectangle.physicsBody = SKPhysicsBody() 
    redRectangle.physicsBody?.categoryBitMask = 1 
    redRectangle.physicsBody?.collisionBitMask = 0 
    blueRectangle.size = CGSize(width: 400, height: 20) 
    blueRectangle.position = CGPoint(x: -100, y: -657) 
    blueRectangle.physicsBody = SKPhysicsBody() 
    greenRectangle.position = CGPoint(x: 0, y: -657) 
    greenRectangle.size = CGSize(width: 400, height: 20) 
    greenRectangle.physicsBody = SKPhysicsBody() 
    self.addChild(redRectangle) 
    self.addChild(blueRectangle) 
    self.addChild(greenRectangle) 
} 

} 

ボールがドロップスルーして矩形ノードに接触したいと思っています。私は衝突とカテゴリのビットマスクを使用しました。誰かがこの問題を解決するのに役立つかどうか、私は思っています、ありがとう。私のノードが衝突していない

+0

このボールは、赤い四角形と衝突するだけですか? –

+0

はい、私はそれを感謝しました。 – user8548753

+0

他の誰かが同じ問題を抱えている場合は、ソリューションを投稿できますか?自分の質問に答えを投稿することができます。 –

答えて

0

ボールを正しく初期化しますが、touchesBegan(_:)の内側に新しいボールを作成して、物理ボディを削除します。

ball.physicsBody = SKPhysicsBody() 
+0

ありがとう、私は行を削除し、ボールはまだ赤い矩形のノードを通過した – user8548753

関連する問題