博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift游戏实战-跑酷熊猫 08 产生源源不断的移动平台
阅读量:7108 次
发布时间:2019-06-28

本文共 1243 字,大约阅读时间需要 4 分钟。

原文:

原理

 

代码实现

 

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

要点:

何时生成新的平台:

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

 

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

主场景中有个变量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) }

项目文件地址

 

Swift游戏实战-跑酷熊猫系列

转载地址:http://sjthl.baihongyu.com/

你可能感兴趣的文章
Java3D实例应用-载入VRML模型
查看>>
XtremSF和XtremSW简介
查看>>
JAVA泛型(代码级解释)
查看>>
使用jQuery Mobile和Phone Gap开发Android应用程序
查看>>
Socket编程 (异步通讯,解决Udp丢包) - Part4
查看>>
ML EX3
查看>>
CR中数据带单位显示及注意事项
查看>>
分页标签测试pager-taglib
查看>>
nullnull计算两个字符串链表中的共同数据项,需要考虑重复选项的情况
查看>>
C#使用Dotfuscator混淆代码以及加密
查看>>
java环境变量配置
查看>>
【Android】CM在repo中使用local manifest
查看>>
【Android】编译CM10.1遇到的错误解决方案
查看>>
Load testing with Visual Studio Ultimate
查看>>
SELECT INTO 与 INSERT INTO SELECT 复制表的两种sql语句
查看>>
php+sqlite cms
查看>>
ASP.NET C#使用JavaScriptSerializer实现序列化与反序列化得到JSON
查看>>
HDTunePro汉化版温度显示不正常后需要更改
查看>>
[置顶] 1+1/1+1/2+1/3 + ...+1/16的整数部分是多少?
查看>>
整理:FPGA选型
查看>>