• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift游戏实战-跑酷熊猫08产生源源不断的移动平台

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

原理

 

代码实现

 

这节内容我们一起学习下平台的生产算法。

要点:

何时生成新的平台:

当上一个平台的右边完全进入场景的时候,就可以生成新的平台类。

 

如何知道上一个平台完全进入场景:

主场景中有个变量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 平台的移动


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
SwiftUIView常用方法发布时间:2022-07-13
下一篇:
[Swift]LeetCode960.删列造序III|DeleteColumnstoMakeSortedIII发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap