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 <= {
println("生成新平台")
//platformFactory.createPlatform(1, x: 1500, y: 200)
platformFactory.createPlatformRandom()
}
platformFactory.move(self.moveSpeed)
}
最后我们在平台工厂类中写一个新的方法用来生成随机长度的平台
func createPlatformRandom(){
//随机平台的长度
let midNum:UInt32 = arc4random()% +
//随机间隔
let gap:CGFloat = CGFloat(arc4random()% + )
//x坐标
let x:CGFloat = self.sceneWidth + CGFloat( midNum* ) + gap +
//y坐标
let y:CGFloat = CGFloat(arc4random()% + )
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游戏实战-跑酷熊猫 08 产生源源不断的移动平台的更多相关文章
- Swift游戏实战-跑酷熊猫 14 熊猫打滚
这节内容我们来实现熊猫打滚.思路是这样的,当熊猫起跳时记录他的Y坐标,落到平台上的时候再记录它的Y坐标.两个坐标之间的差要是大于一定数值就判断它从高处落下要进行打滚缓冲.至此跑酷熊猫已经像一个游戏的样 ...
- Swift游戏实战-跑酷熊猫 13 二段跳的实现
这节内容我们来实现熊猫的二段跳. 要点: 二段跳的逻辑: 逻辑一,第一次点击屏幕,status就会变成jump. 逻辑二,第二次点击屏幕,status就会变成jump2. 逻辑三,当status变成j ...
- Swift游戏实战-跑酷熊猫 12 与平台的碰撞
这节主要实现熊猫和平台的碰撞,实现熊猫在平台上奔跑 要点 对平台进行物理属性设置 //设置物理体以及中心点 self.physicsBody = SKPhysicsBody(rectangleOfSi ...
- Swift游戏实战-跑酷熊猫 11 欢迎进入物理世界
物理模拟是一个奇妙的事情,以此著名的游戏有愤怒的小鸟.我们在这节将会一起来了解如何设置重力,设置物理包围体,碰撞的检测. 要点: 设置物理检测的代理: 让主场景遵循SKPhysicsContactDe ...
- Swift游戏实战-跑酷熊猫 10 视差滚动背景
原理 实现 勘误 “实现”的视频中有个错误,如下 背景移动时有个错误,看红色部分,近景归位时,第二张图片的下标是1 if arrBG[0].position.x + arrBG[0].frame.wi ...
- Swift游戏实战-跑酷熊猫 09 移除场景之外的平台
上一节,我们写出了一个疯狂产生平台的东西.所谓上帝欲使其灭亡,必先使其疯狂.所以太疯狂都不是什么好事,所以我们要采取一些措施,例如移除场景之外的平台.btw如果哪天你觉得自己的老板行为乖张,难以理喻. ...
- Swift游戏实战-跑酷熊猫 07 平台的移动
这节内容我们来实现平台是怎么产生移动动画的. 要点 1 利用数组存放平台 var platforms=[Platform]() 2 有新的平台产生存放进数组 platforms.append(plat ...
- Swift游戏实战-跑酷熊猫 06 创建平台类以及平台工厂类
这节内容我们一起学习下随机长度的踩踏平台的原理是怎么样的. 要点: 平台类 我们的平台类继承于SKNode,这样就能被添加进其它节点进而显示在场景中. 它有一个方法来创建平台,这个方法接收一个包含SK ...
- Swift游戏实战-跑酷熊猫 05 踩踏平台是怎么炼成的
这节内容我们一起学习下随机长度的踩踏平台的原理是怎么样的. 要点: 平台的组成 我们的平台由3部分组成 左: 中: 右: 其中中间部分是可以无缝衔接的,下面就是两个中间部分衔接在一起 要任何长度的平台 ...
随机推荐
- 【转载】Linux系统与性能监控
原文地址:http://kerrigan.sinaapp.com/post-7.html Linux System and Performance Monitoring http://www.hous ...
- Linux 关闭防火墙命令
用linux自己来访问web是可以的 比如 192.168.2.20就可以访问本机的相关页面 用192.168.2.20/phpmyadmin就可以访问数据库相关内容 可是,当别的局域网的电脑想访问时 ...
- vue model双向绑定
view <div id='demo' class="container"> <input type="text" v-model='name ...
- w_all_checked - js -checkbox 多选、全选、submit、request
<!doctype html> <html> <head> <meta charset="UTF-8"> </head> ...
- poj1979
#include<stdio.h>int map[4][4]={'.','.','.','.', '#','.','.','.', '.','#','.','.', ...
- ②springMVC入门
1 1.1 需求 以案例作为驱动. springmvc和mybaits使用一个案例(商品订单管理). 功能需求:商品列表查询 1.2 环境准备 数据库环境:mysql5.1
- 【Demo】HTML5 拍照上传
本文主要讲解 手机浏览器 如何拍照 为什么会有这个需求 最近做一个项目要用到拍照然后上传照片,但是网页拍照一般都是用Flash做的,而我们主要是H5页面,如果在微信里面有权限就可以通过JSSDK调起摄 ...
- Bluetooth Security Manager
一.概念 The Security Manager defines methods of pairing and key distribution, a protocol for those ...
- Solr4.3之检索建议suggest
原文链接:http://www.656463.com/article/Efm26v.htm 很多才学solr的人,都容易把solr spellcheck和solr suggest混淆,误以为他们是一样 ...
- JavaScript POST 请求如何跨域
前天遇到一个问题,就是我上传图片的时候,这个图片需要上传给某个API的接口 这样问题就来了,我们之前上传图片的时候都是先上传到我们自己的后台里面,然后通过后台,再把这个流传到图片服务器上. 但是上传到 ...