我需要为我的游戏制作一个背景,从上到下无限滚动。这就是我现在所拥有的,但背景到底但从未回到顶部。这就是我现在所拥有的。我在xcode 9上用swift 4写作。
import SpriteKit
class GameScene: SKScene {
var ground = SKSpriteNode()
override func didMove(to view: SKView) {
createGrounds()
}
override func update(_ currentTime: TimeInterval) {
moveGrounds()
}
func createGrounds() {
for i in 0 ... 3 {
let ground = SKSpriteNode(imageNamed: "backGround")
ground.name = "Ground"
ground.size = CGSize(width: (self.scene?.size.width)!, height: ((self.scene?.size.height)! * 2))
ground.anchorPoint = CGPoint(x: 0.5, y:0.5)
ground.position = CGPoint(x: (CGFloat(i) * ground.size.height), y: (self.frame.size.height / 2))
self.addChild(ground)
print(i)
}
}
func moveGrounds() {
self.enumerateChildNodes(withName: "Ground", using: ({
(node, error) in
node.position.y -= 7
if node.position.y > ((self.scene?.size.height))! {
node.position.y += (self.scene?.size.height)! / 3
}
}))
}
}
答案 0 :(得分:0)
一开始,背景位于(self.frame.size.height / 2)
高度,每移动一次,您将y
减少7,因此y
总是小于(self.frame.size.height / 2)
,你怎么样?认为条件node.position.y > ((self.scene?.size.height))
可能是真的吗?
您应该在小于0或类似情况时重置y
(取决于您管理anchor
和position
的方式)。