Swift游戏实战-跑酷熊猫 09 移除场景之外的平台
上一节,我们写出了一个疯狂产生平台的东西。所谓上帝欲使其灭亡,必先使其疯狂。所以太疯狂都不是什么好事,所以我们要采取一些措施,例如移除场景之外的平台。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 = 0var delegate:ProtocolMainScene?func createPlatformRandom(){let midNum:UInt32 = arc4random()%4 + 1let gap:CGFloat = CGFloat(arc4random()%8 + 1)let x:CGFloat = self.sceneWidth + CGFloat(midNum*50) + gap + 100let 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 产生源源不断的移动平台
Swift游戏实战-跑酷熊猫 09 移除场景之外的平台相关推荐
- Swift游戏实战-跑酷熊猫 12 与平台的碰撞
原文:Swift游戏实战-跑酷熊猫 12 与平台的碰撞 这节主要实现熊猫和平台的碰撞,实现熊猫在平台上奔跑 要点 对平台进行物理属性设置 //设置物理体以及中心点 self.physicsBody = ...
- Swift游戏实战-跑酷熊猫 01 创建工程导入素材
原文:Swift游戏实战-跑酷熊猫 01 创建工程导入素材 在这节里,我们将建立一个游戏工程,并导入一些必要的素材,例如序列帧动画文件,声音素材文件.动画文件我们使用atlas形式.在打包发布或者模拟 ...
- Swift游戏实战-跑酷熊猫 07 平台的移动
原文:Swift游戏实战-跑酷熊猫 07 平台的移动 这节内容我们来实现平台是怎么产生移动动画的. 要点 1 利用数组存放平台 var platforms=[Platform]() 2 有新的平台产生 ...
- Swift游戏实战-跑酷熊猫 00 游戏预览
这个系列我们将要一起来做一个这样的游戏 转载于:https://www.cnblogs.com/sandal1980/p/3842076.html
- swift语言实战晋级-第9章 游戏实战-跑酷熊猫-7-8 移动平台的算法
原文:swift语言实战晋级-第9章 游戏实战-跑酷熊猫-7-8 移动平台的算法 在上个小节,我们完成了平台的产生.那么我们来实现一下让平台移动.平台的移动,我们只需要在平台工厂类中写好移动的方法,然 ...
- Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-2 创建熊猫类
当我们创建好项目文件后我们就可以开始一步一步的按照我们之前列入的清单来编写我们的游戏.现在就让我们来创建一个熊猫这个类Panda.swift.我们将采取分解的方式,一步一步的完成Panda.swift ...
- Swift游戏开发实战教程(大学霸内部资料)
Swift游戏开发实战教程(大学霸内部资料) 试读下载地址:http://pan.baidu.com/s/1sj7DvQH 介绍:本教程是国内第一本Swift游戏开发专向资料. 本教程详细讲解记忆配对 ...
- 视频教程 | 3D 跑酷小游戏实战开发(下)
上篇内容我们发布了 <视频教程 | 3D 跑酷小游戏实战开发(上)>,讲述了概述及创建.跑道创建.添加主角,今天我们继续学习:添加金币.处理碰撞.添加UI界面. 通过今天的学习,相信大家可 ...
- Swift游戏开发实战教程(霸内部信息大学)
Swift游戏开发实战教程(大学霸内部资料) 试读下载地址:http://pan.baidu.com/s/1sj7DvQH 介绍:本教程是国内第一本Swift游戏开发专向资料. 本教程具体解说记忆配对 ...
- 《Swift开发实战》——导读
本节书摘来自异步社区<Swift开发实战>一书中的目录,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 内容简介 前 言 第1章 工欲善其事,必 ...
最新文章
- Robocopy是微软Windows Server 2003资源工具包中众多多用途的实用程序之一(它是基于强大的拷贝程序...
- HDU 2157 How many ways?? 临接矩阵+快速幂
- cpp cu入门教程
- 数据结构——数据结构中的数据表示
- Django 1.10中更新modules同步数据库
- 应用配置管理ACM 使用场景快速入门
- gcn在图像上的应用_GCN的概念与应用
- 物理学基石 —— 电
- 没有你不会的CAD?CAD知识整理上集
- 【01】制作第一个zblog模板第一期,第一步首先我们创建我们的模板基础信息以及申请成为zblog开发者
- 老板必看:1.初创业团队没有激情,咋办? 2.小股东的选择
- 图片上传时,显示格式错误怎么办?
- Docker + Gitlab + Gitlab CI(三)
- 视频去水印、文案提取和智能配音,视频搬运合成速成教程,超简单
- Push to origin/master was rejected异常解决办法
- CNN2019.11.22
- LCD段码液晶屏开模过程参数
- ACM-图论完全总结(知识点+模板)
- OSS中Bucket绑定域名并配置SSL证书
- 008 -菲波那切数列