我试图让我的背景从右到左无限移动。
我的意思:
extraglobs
我的didMoveToView
t
我的更新功能为空。
我上传了一张在设备上运行时的样子:http://s18.postimg.org/kbn83tvmx/i_OS_Simulator_Screen_Shot_09_Aug_2015_23_33_39.png
图像仍在屏幕的一半上,图像现在也不会移动。
答案 0 :(得分:1)
我要从我制作的另一款游戏中复制并粘贴我的代码。此代码永远从左右移动背景。我会尽力解释这段代码。
func createBackground () {
var backgroundTexture = SKTexture(imageNamed: "bg")
var moveBackgroundByX = SKAction.moveByX(-backgroundTexture.size().width, y: 0, duration: backgroundSpeed)
var replaceBackground = SKAction.moveByX(backgroundTexture.size().width, y: 0, duration: 0)
var moveBackgroundForever = SKAction.repeatActionForever(SKAction.sequence([moveBackgroundByX, replaceBackground]))
for var i:CGFloat = 0; i < 3; i++ {
background = SKSpriteNode(texture: backgroundTexture)
background.position = CGPoint(x: backgroundTexture.size().width/2 + (backgroundTexture.size().width * i), y: CGRectGetMidY(self.frame))
background.size.height = self.frame.height
background.runAction(moveBackgroundForever)
movingObjects.addChild(background)
}
}
您需要做的是:
如果您有任何疑问,请告诉我。
答案 1 :(得分:1)
您的背景仅占用屏幕一半的原因是因为您使用的是图像的常规尺寸(以像素为单位)。您需要修改xScale
和yScale
属性,以使其更大。你需要的是:
background.setScale(2)
接下来,要移动背景精灵,请改用SKAction
,因为您可以更好地控制时间。 update
内的动作将不会是一致的,因为除非您有一个算法来准确控制update:
被调用的时间,否则您将看到动作加速或减慢。要移动背景,请在didMoveToView
方法之后使用看起来像这样的代码:
var backgroundMovement = SKAction.moveByX(background.size.x, y: 0, duration: someDuration)
background.runAction(background, completion: {() -> Void in
//place background image at start again
background.position = ...
})
如果您希望背景连续移动并以任何方式编辑它以使其看起来更好(例如让两个背景随SKAction移动),则循环此代码。希望这有帮助