在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
原理代码实现
这节内容我们一起学习下平台的生产算法。 要点:何时生成新的平台: 当上一个平台的右边完全进入场景的时候,就可以生成新的平台类。
如何知道上一个平台完全进入场景: 主场景中有个变量lastDis记录着平台还有多少距离完全进入场景,他的计算公式是: 平台的长度+x坐标 - 主场景的宽度 我们通过代理将lastDis回传给主场景 delegate?.onGetData(platform.width + x - sceneWidth)
所以这里我们需要一个代理,这个代理有个方法叫onGetData: protocol ProtocolMainScene{
func onGetData(dist:CGFloat)
}
主场景要遵循这个代理 GameScene: SKScene,ProtocolMainScene
在主场景中实现onGetData这个方法,将回传的值赋予lastDis变量 func onGetData(dist:CGFloat){ self.lastDis = dist }
lastDis是随着平台的速度做变化,也就是在update中做减法,当lastDis小等于0的时候生成新的平台: override func update(currentTime: CFTimeInterval) { lastDis -= moveSpeed if lastDis <= 0 { println("生成新平台") //platformFactory.createPlatform(1, x: 1500, y: 200) platformFactory.createPlatformRandom() } platformFactory.move(self.moveSpeed) }
最后我们在平台工厂类中写一个新的方法用来生成随机长度的平台 func createPlatformRandom(){ //随机平台的长度 let midNum:UInt32 = arc4random()%4 + 1 //随机间隔 let gap:CGFloat = CGFloat(arc4random()%8 + 1) //x坐标 let x:CGFloat = self.sceneWidth + CGFloat( midNum*50 ) + gap + 100 //y坐标 let y:CGFloat = CGFloat(arc4random()%200 + 200) createPlatform(midNum, x: x, y: y) } 项目文件地址http://yun.baidu.com/share/link?shareid=3824235955&uk=541995622
Swift游戏实战-跑酷熊猫系列00 游戏预览01 创建工程导入素材02 创建熊猫类03 熊猫跑动动画04 熊猫的跳和滚的动作05 踩踏平台是怎么炼成的06 创建平台类以及平台工厂类07 平台的移动 |
请发表评论