標籤:style blog http color os strong 檔案 io
上一節,我們寫出了一個瘋狂產生平台的東西。所謂上帝欲使其滅亡,必先使其瘋狂。所以太瘋狂都不是什麼好事,所以我們要採取一些措施,例如移除情境之外的平台。btw如果哪天你覺得自己的老闆行為乖張,難以理喻。例如明明沒什麼事做還要沒事找事讓你瘋狂加班,這時候就要小心,小心……哈哈,扯遠了。
要點:
如何判斷平台移除情境:
由於我們的平台是一個接一個的有順序的產生,所以每次我們只要判斷數組第一個平台也就是下標為0的元素是否移除情境就夠了。怎麼判斷移除情境呢?由於我們的平台的錨點是在最左邊,所以只要判斷平台的座標是否小於平台的寬度的負值即可。這一切都在move方法中進行。
if platforms[0].position.x < -platforms[0].width { platforms[0].removeFromParent() platforms.removeAtIndex(0)}
這時候我們的平台工廠類的完整代碼應該是這樣,重要代碼已加粗加大
import SPriteKitclass PlatformFactory:SKNode{ let textureLeft = SKTexture(imageNamed: "platform_l") let textureMid = SKTexture(imageNamed: "platform_m") let textureRight = SKTexture(imageNamed: "platform_r") var platforms = [Platform]() var sceneWidth : CGFloat = 0 var delegate:ProtocolMainScene? func createPlatformRandom(){ let midNum:UInt32 = arc4random()%4 + 1 let gap:CGFloat = CGFloat(arc4random()%8 + 1) let x:CGFloat = self.sceneWidth + CGFloat(midNum*50) + gap + 100 let y:CGFloat = CGFloat(arc4random()%200+200) createPlatform(midNum, x: x, y: y) } func createPlatform(midNum:UInt32,x:CGFloat,y:CGFloat){ let platform = Platform() platform.position = CGPointMake(x, y) let platform_left = SKSpriteNode(texture: textureLeft) platform_left.anchorPoint = CGPointMake(0, 0.9) let platform_right = SKSpriteNode(texture: textureRight) platform_right.anchorPoint = CGPointMake(0, 0.9) var arrPlatform = [SKSpriteNode]() arrPlatform.append(platform_left) for i in 1...midNum { let platform_mid = SKSpriteNode(texture: textureMid) platform_mid.anchorPoint = CGPointMake(0, 0.9) arrPlatform.append(platform_mid) } arrPlatform.append(platform_right) platform.onCreate(arrPlatform) self.addChild(platform) platforms.append(platform) //通用公式:產生的平台的長度 + 平台的x座標 - 主情境的寬度 delegate?.onGetData(platform.width + x - sceneWidth) } func move(speed:CGFloat){ for p in platforms { p.position.x -= speed } if platforms[0].position.x < -platforms[0].width { platforms[0].removeFromParent() platforms.removeAtIndex(0) } }}
專案檔地址
http://yun.baidu.com/share/link?shareid=3824235955&uk=541995622
Swift遊戲實戰-跑酷熊貓系列00 遊戲預覽01 建立工程匯入素材02 建立熊貓類03 熊貓跑動動畫04 熊貓的跳和滾的動作05 踩踏平台是怎麼煉成的06 建立平台類以及平台工廠類07 平台的移動08 產生源源不斷的移動平台