-2
我遇到了與牆壁碰撞的問題,請幫忙! 這是左邊牆不會碰撞,我不知道爲什麼,我認爲這是差距/ scoreNode。我認爲這是物理機構。在swift 3 sprite套件中發生碰撞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
isDynamic需要爲您想的碰撞工作排序的 – Nik
@Nik節點真 - didBeginContact將被調用時,動態物體和一個非動態的身體接觸,假設一切正常。 –