原文:Swift游戏实战-跑酷熊猫 12 与平台的碰撞

这节主要实现熊猫和平台的碰撞,实现熊猫在平台上奔跑

要点

对平台进行物理属性设置

//设置物理体以及中心点
self.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(self.width, self.height), center: CGPointMake(self.width/2, 0))
//设置碰撞标示符
self.physicsBody.categoryBitMask = BitMaskType.platform
//不受碰撞影响
self.physicsBody.dynamic = false
//不允许角度变化
self.physicsBody.allowsRotation = false
//摩擦力
self.physicsBody.restitution = 0

改造熊猫类

//用或“|”分割需要进行检测的标示符
self.physicsBody.contactTestBitMask = BitMaskType.scene | BitMaskType.platform
//用physicsBody.collisionBitMask来设置产生碰撞效果的物体
self.physicsBody.collisionBitMask = BitMaskType.platform

平台类的代码

import SpriteKitclass Platform:SKNode{var width = 0.0var height = 10.0func onCreate(arrSprite:[SKSpriteNode]){for platform in arrSprite{platform.position.x=self.widthself.addChild(platform)self.width += platform.size.width}self.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(self.width, self.height), center: CGPointMake(self.width/2, 0))self.physicsBody.categoryBitMask = BitMaskType.platformself.physicsBody.dynamic = falseself.physicsBody.allowsRotation = false//摩擦力self.physicsBody.restitution = 0}}

熊猫类的代码

import SpriteKitenum Status:Int{case run=1,jump,jump2,roll;
}class Panda : SKSpriteNode {let runAtlas = SKTextureAtlas(named: "run.atlas")let runFrames = [SKTexture]()let jumpAtlas = SKTextureAtlas(named: "jump.atlas")let jumpFrames = [SKTexture]();let rollAtlas = SKTextureAtlas(named: "roll.atlas")let rollFrames = [SKTexture]();var status = Status.runinit(){let texture = runAtlas.textureNamed("panda_run_01")let size = texture.size()super.init(texture:texture,color:SKColor.whiteColor(),size:size)var i:Intfor i=1 ; i<=runAtlas.textureNames.count ; i++ {let tempName = String(format: "panda_run_%.2d", i)let runTexture = runAtlas.textureNamed(tempName)if runTexture {runFrames.append(runTexture)}}for i=1 ; i<=jumpAtlas.textureNames.count ; i++ {let tempName = String(format: "panda_jump_%.2d", i)let jumpTexture = jumpAtlas.textureNamed(tempName)if jumpTexture {jumpFrames.append(jumpTexture)}}for i=1 ; i<=rollAtlas.textureNames.count ; i++ {let tempName = String(format: "panda_roll_%.2d", i)let rollTexture = rollAtlas.textureNamed(tempName)if rollTexture {rollFrames.append(rollTexture)}}self.physicsBody = SKPhysicsBody(rectangleOfSize: texture.size())self.physicsBody.dynamic = trueself.physicsBody.allowsRotation = false//摩擦力self.physicsBody.restitution = 0self.physicsBody.categoryBitMask = BitMaskType.pandaself.physicsBody.contactTestBitMask = BitMaskType.scene | BitMaskType.platformself.physicsBody.collisionBitMask = BitMaskType.platformrun()}func run(){self.removeAllActions()self.status = .runself.runAction(SKAction.repeatActionForever(SKAction.animateWithTextures(runFrames, timePerFrame: 0.05)))}func jump (){self.removeAllActions()status = .jumpself.runAction(SKAction.animateWithTextures(jumpFrames, timePerFrame: 0.05))}func roll(){self.removeAllActions()status = .rollself.runAction(SKAction.animateWithTextures(rollFrames, timePerFrame: 0.05),completion:{() in self.run()})}}

项目文件地址

http://yun.baidu.com/share/link?shareid=3824235955&uk=541995622

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

00 游戏预览

01 创建工程导入素材

02 创建熊猫类

03 熊猫跑动动画

04 熊猫的跳和滚的动作

05 踩踏平台是怎么炼成的

06 创建平台类以及平台工厂类

07 平台的移动

08 产生源源不断的移动平台

09 移除场景之外的平台

10 视差滚动背景

11 欢迎进入物理世界

Swift游戏实战-跑酷熊猫 12 与平台的碰撞相关推荐

  1. swift语言实战晋级-第9章 游戏实战-跑酷熊猫-7-8 移动平台的算法

    原文:swift语言实战晋级-第9章 游戏实战-跑酷熊猫-7-8 移动平台的算法 在上个小节,我们完成了平台的产生.那么我们来实现一下让平台移动.平台的移动,我们只需要在平台工厂类中写好移动的方法,然 ...

  2. Swift游戏实战-跑酷熊猫 07 平台的移动

    原文:Swift游戏实战-跑酷熊猫 07 平台的移动 这节内容我们来实现平台是怎么产生移动动画的. 要点 1 利用数组存放平台 var platforms=[Platform]() 2 有新的平台产生 ...

  3. Swift游戏实战-跑酷熊猫 01 创建工程导入素材

    原文:Swift游戏实战-跑酷熊猫 01 创建工程导入素材 在这节里,我们将建立一个游戏工程,并导入一些必要的素材,例如序列帧动画文件,声音素材文件.动画文件我们使用atlas形式.在打包发布或者模拟 ...

  4. Swift游戏实战-跑酷熊猫 00 游戏预览

    这个系列我们将要一起来做一个这样的游戏 转载于:https://www.cnblogs.com/sandal1980/p/3842076.html

  5. Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-2 创建熊猫类

    当我们创建好项目文件后我们就可以开始一步一步的按照我们之前列入的清单来编写我们的游戏.现在就让我们来创建一个熊猫这个类Panda.swift.我们将采取分解的方式,一步一步的完成Panda.swift ...

  6. Swift游戏开发实战教程(大学霸内部资料)

    Swift游戏开发实战教程(大学霸内部资料) 试读下载地址:http://pan.baidu.com/s/1sj7DvQH 介绍:本教程是国内第一本Swift游戏开发专向资料. 本教程详细讲解记忆配对 ...

  7. Swift游戏开发实战教程(霸内部信息大学)

    Swift游戏开发实战教程(大学霸内部资料) 试读下载地址:http://pan.baidu.com/s/1sj7DvQH 介绍:本教程是国内第一本Swift游戏开发专向资料. 本教程具体解说记忆配对 ...

  8. 视频教程 | 3D 跑酷小游戏实战开发(下)

    上篇内容我们发布了 <视频教程 | 3D 跑酷小游戏实战开发(上)>,讲述了概述及创建.跑道创建.添加主角,今天我们继续学习:添加金币.处理碰撞.添加UI界面. 通过今天的学习,相信大家可 ...

  9. 购买李宁Cocos2d-x套餐,送最新出的《Cocos2d-x游戏实战指南》签名书一本

    活动时间:2016-10-18至2016-11-30 通过本套餐,可完全了解Cocos2d-x 3.x的相关技术,以及掌握C++语言,并具有一定的项目实战经验. Cocos2d-x游戏开发套餐:htt ...

最新文章

  1. JavaFx实现-渐变效果之一
  2. zabbix mysql复制延迟_mysql 主从复制延迟监控
  3. oracle 怎么附加数据库,Oracle 如何附加数据库
  4. linux 编辑文件乱码,Linux 下 vim 编辑文件,解决中文乱码,设置Tab键空格数
  5. WindStyle ExifInfo for Windows Live Writer发布
  6. [Scottgu]ASP.NET vNext系列——数据选择
  7. 【Feign源码】保存请求数据的载体--Template
  8. 服务器拷贝数据库文件,服务器怎么拷贝数据库文件
  9. 第三阶段应用层——1.7 数码相册—电子书(6)—支持远程打印信息
  10. 微软通过云存储插件简化Docker容器迁移
  11. MTK Android 之MT6577驱动笔记
  12. 因为相信所以看见,既然看见注定坚信《17》
  13. 极客时间学习笔记:03芯片分类
  14. css如何选择相同class下的第一个class元素和最后一个元素?
  15. nas架设php网站,使用QNAP NAS虚拟主机功能架设多个网站
  16. kali2020版安装VMware Tools和安装中文输入法和软件缺失问题
  17. 对Java.io中一些类的归纳,层次结构图
  18. iOS学习笔记15 序列化、偏好设置和归档
  19. 送给刚入职 有压力和迷茫的你
  20. 设置IDEA注释符不在行首显示

热门文章

  1. 思必驰十年创业,(现在)是一家怎样的公司?
  2. 无人驾驶汽车遭遇AI路障
  3. 活动合作 | 期待!GMIC北京2018即将拉开大幕
  4. 在前端团队的那些日子(初见)
  5. hihoCoder1223 不等式
  6. Linux下kvm:检测硬件是否支持虚拟化
  7. BIEE11G系统数据源账号过期问题(默认安装步骤)
  8. Android NDK 【错误】The method loadLibrary(String) is undefined for the type Settings.Syste
  9. printf 小代码 大问题
  10. 转:PHP程序里的敏感信息处理方法