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

简介: 原文:Swift游戏实战-跑酷熊猫 08 产生源源不断的移动平台原理   代码实现   这节内容我们一起学习下平台的生产算法。 要点: 何时生成新的平台: 当上一个平台的右边完全进入场景的时候,就可以生成新的平台类。
原文: Swift游戏实战-跑酷熊猫 08 产生源源不断的移动平台

原理

 

代码实现

 

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

要点:

何时生成新的平台:

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

 

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

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

目录
相关文章
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
171 2
【Swift开发专栏】Swift中的RESTful API集成实战
【4月更文挑战第30天】本文探讨了在Swift中集成RESTful API的方法,涉及RESTful API的基础概念,如HTTP方法和设计原则,以及Swift的网络请求技术,如`URLSession`、`Alamofire`和`SwiftyJSON`。此外,还强调了数据处理、错误管理和异步操作的重要性。通过合理利用这些工具和策略,开发者能实现高效、稳定的API集成,提升应用性能和用户体验。
252 0
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
Object c/swift,java,c/c++在32位和64位各个平台上基本数据类型 所占有的字节数
Object c/swift,java,c/c++在32位和64位各个平台上基本数据类型 所占有的字节数
119 0
【Swift开发专栏】Swift函数与闭包的实战应用
【4月更文挑战第30天】本文介绍了 Swift 中函数和闭包的实战应用。首先,函数的基本使用包括定义、参数与返回值、函数类型以及高级技巧如嵌套函数。接着,讨论了闭包的语法,包括无名函数、作为函数参数、简写形式和尾随闭包。最后,展示了函数和闭包在实战中的应用,如排序过滤集合和处理异步任务的回调。
107 0
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
351 2
使用Swift编写电脑监控录屏软件:在macOS平台上实现
在本文中,我们将探讨如何使用Swift编写一款电脑监控录屏软件,实现在macOS平台上的功能。这个软件将能够监控用户的屏幕活动,并将录制的数据自动提交到指定的网站。我们将深入讨论代码示例,以帮助您了解实现过程。
450 0
Swift游戏实战-跑酷熊猫 14 熊猫打滚
原文:Swift游戏实战-跑酷熊猫 14 熊猫打滚   这节内容我们来实现熊猫打滚。思路是这样的,当熊猫起跳时记录他的Y坐标,落到平台上的时候再记录它的Y坐标。两个坐标之间的差要是大于一定数值就判断它从高处落下要进行打滚缓冲。
1176 0
|
12月前
|
苹果iOS新手开发之Swift 中获取时间戳有哪些方式?
在Swift中获取时间戳有四种常见方式:1) 使用`Date`对象获取秒级或毫秒级时间戳;2) 通过`CFAbsoluteTimeGetCurrent`获取Core Foundation的秒数,需转换为Unix时间戳;3) 使用`DispatchTime.now()`获取纳秒级精度的调度时间点;4) `ProcessInfo`提供设备启动后的秒数,不表示绝对时间。不同方法适用于不同的精度和场景需求。
378 3

相关课程

更多