4
我發現了一個使用objective-C在spritekit中進行視差滾動的教程,儘管我一直試圖將它移植到swift中,但實際上卻很少成功。視差滾動SpriteKit
沒有人有任何其他教程或迅速做視差滾動的方法。
我發現了一個使用objective-C在spritekit中進行視差滾動的教程,儘管我一直試圖將它移植到swift中,但實際上卻很少成功。視差滾動SpriteKit
沒有人有任何其他教程或迅速做視差滾動的方法。
這是一個啓動視差背景的超簡單方法。與SKACTIONS!我希望它能幫助你理解基礎知識,然後再轉向更難但更有效的編碼方式。 所以我將從獲得背景移動的代碼開始,然後嘗試複製前景中的代碼或要放入場景中的對象。
//declare ground picture. If Your putting this image over the top of another image (use a png file).
var groundImage = SKTexture(imageNamed: "background.jpg")
//make your SKActions that will move the image across the screen. this one goes from right to left.
var moveBackground = SKAction.moveByX(-groundImage.size().width, y: 0, duration: NSTimeInterval(0.01 * groundImage.size().width))
//This resets the image to begin again on the right side.
var resetBackGround = SKAction.moveByX(groundImage.size().width, y: 0, duration: 0.0)
//this moves the image run forever and put the action in the correct sequence.
var moveBackgoundForever = SKAction.repeatActionForever(SKAction.sequence([moveBackground, resetBackGround]))
//then run a for loop to make the images line up end to end.
for var i:CGFloat = 0; i<2 + self.frame.size.width/(groundImage.size().width); ++i {
var sprite = SKSpriteNode(texture: groundImage)
sprite.position = CGPointMake(i * sprite.size.width, sprite.size.height/2)
sprite.runAction(moveBackgoundForever)
self.addChild(sprite)
}
}
//once this is done repeat for a forground or other items but them run at a different speed.
/*確保您的照片在視覺上端對端排列。僅僅複製這段代碼就不會像你所看到的那樣工作,但它是一個起點。暗示。如果你的使用物品像簡單的障礙物,然後使用動作來產生一個創建障礙物的功能也許是一個好方法。如果有多於兩個單獨的視差對象,那麼爲這些對象使用數組將有助於提高性能。有很多方法可以解決這個問題,所以我的觀點很簡單:如果你不能從ObjectiveC中移植它,那麼在Swift中重新考慮它。祝你好運!
不錯 - 很簡單。謝謝。把它變成了我傳遞背景名稱,滾動速度和zPosition的函數。下一步它使背景成爲可能的背景陣列,所以你可以讓每一層不是來自一個圖像和幾個不同的圖像。 – 2016-03-10 14:13:23