-2
壁にぶつかってプレイヤーにぶつかりません! それは衝突していない左の壁ですが、私はなぜそれがgap/scoreNodeだと思ったのかわかりません。私はそれが物理学の団体だと思う。スウィフト3スプライトキットの衝突Xcode 8
Faller = SKSpriteNode(color: UIColor.red, size: CGSize(width: 100, height: 100))
Faller.position = CGPoint(x: self.frame.width/2 - 400, y: self.frame.height - 300)
Faller.physicsBody = SKPhysicsBody(rectangleOf: Faller.size)
Faller.physicsBody?.categoryBitMask = PhysicsCatagory.Faller
Faller.physicsBody?.collisionBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall | gapGroup
Faller.physicsBody?.contactTestBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall
Faller.physicsBody?.affectedByGravity = false
Faller.physicsBody?.isDynamic = true
転倒がプレイヤー
let randomSize = CGFloat.random(min: 600, max: self.frame.width/2 + 156)
let gap = SKNode()
gap.position = CGPoint(x: self.frame.width/2, y: self.frame.height/4 - 50)
gap.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: 100, height: 2))
gap.run(moveAndRemove)
gap.physicsBody?.isDynamic = false
gap.physicsBody?.collisionBitMask = gapGroup
gap.physicsBody?.categoryBitMask = gapGroup
gap.physicsBody?.contactTestBitMask = fallerGroup
gap.name = "gap"
gap.zPosition = 1
let rightWall = SKSpriteNode(color: UIColor.green, size: CGSize(width: 243, height: 100))
rightWall.size.width += randomSize
let leftWall = SKSpriteNode(color: UIColor.green, size: CGSize(width: 343, height: 100))
leftWall.size.width -= (randomSize - 100)
rightWall.position = CGPoint(x: self.frame.width/2 + 400, y: self.frame.height/4)
leftWall.position = CGPoint(x: self.frame.width/2 - 400, y: self.frame.height/4)
leftWall.physicsBody = SKPhysicsBody(rectangleOf: leftWall.size)
leftWall.physicsBody?.categoryBitMask = PhysicsCatagory.Wall
leftWall.physicsBody?.collisionBitMask = PhysicsCatagory.Faller
leftWall.physicsBody?.contactTestBitMask = PhysicsCatagory.Faller
leftWall.physicsBody?.isDynamic = false
leftWall.physicsBody?.affectedByGravity = false
leftWall.name = "lWall"
self.addChild(leftWall)
rightWall.physicsBody = SKPhysicsBody(rectangleOf: rightWall.size)
rightWall.physicsBody?.categoryBitMask = PhysicsCatagory.Wall
rightWall.physicsBody?.collisionBitMask = PhysicsCatagory.Faller
rightWall.physicsBody?.contactTestBitMask = PhysicsCatagory.Faller
rightWall.physicsBody?.isDynamic = false
rightWall.physicsBody?.affectedByGravity = false
rightWall.name = "rWall"
self.addChild(rightWall)
rightWall.zPosition = 2
leftWall.zPosition = 2
self.addChild(gap)
であり、ここでコリジョン機能が
unc didBegin(_ contact: SKPhysicsContact){
let firstBody = contact.bodyA
let secondBody = contact.bodyB
if firstBody.categoryBitMask == PhysicsCatagory.Wall && secondBody.categoryBitMask == PhysicsCatagory.Faller || firstBody.categoryBitMask == PhysicsCatagory.Faller && secondBody.categoryBitMask == PhysicsCatagory.Wall {
print("collided")
let endScene = EndScene(size: self.size)
let transition = SKTransition.doorsCloseHorizontal(withDuration: 0.5)
endScene.scaleMode = SKSceneScaleMode.aspectFill
self.scene!.view?.presentScene(endScene, transition: transition)
// touched = true
}
if firstBody.categoryBitMask == gapGroup && secondBody.categoryBitMask == PhysicsCatagory.Faller || firstBody.categoryBitMask == PhysicsCatagory.Faller && secondBody.categoryBitMask == gapGroup {
print("score working")
if pause == false {
score += 1
if score > highScore {
highScore = score
}
}
scoreLabel.text = "Score: \(score)"
let HighscoreDefault = UserDefaults.standard
HighscoreDefault.setValue(highScore, forKey: "highScore")
HighscoreDefault.synchronize()
print(highScore)
print("fell")
}
}
が転倒からisDynamicを削除しようと(またはfalseに設定)を使用すると、衝突がソートの – DreamerNo56
を - didBeginContactが呼ばれるダイナミックなボディ他のすべてがOKであると仮定して、非動的な身体接触をします。 – Nik
@Nikを仕事をしたいのノードに対して真である必要がisDynamic –