Swift游戏实战-跑酷熊猫 11 欢迎进入物理世界

物理模拟是一个奇妙的事情,以此著名的游戏有愤怒的小鸟。我们在这节将会一起来了解如何设置重力,设置物理包围体,碰撞的检测。

要点:

设置物理检测的代理:

让主场景遵循SKPhysicsContactDelegate协议。通过didBeginContact方法来响应物体之间是否碰撞。自然,我们要把物理系统的代理设为主场景。

self.physicsWorld.contactDelegate = self

设置重力:

self.physicsWorld.gravity = CGVectorMake(0, -5)

因为我们需要对熊猫是否掉到场景之外进行检测,所以设置场景的包围体为“边缘”类型。

self.physicsBody = SKPhysicsBody(edgeLoopFromRect: self.frame)

设置一个标识符:

self.physicsBody.categoryBitMask = BitMaskType.scene

同样,设置完场景类,我们也要对熊猫类进行改造,因为碰撞毕竟是两个好基友之间的事情。

//设置熊猫的包围体为矩形
self.physicsBody = SKPhysicsBody(rectangleOfSize:texture.size())
 //产生物理效应
self.physicsBody.dynamic = true
//不做角度变化
self.physicsBody.allowsRotation = false
 //摩擦力设为0
self.physicsBody.restitution = 0
//设置标识符
self.physicsBody.categoryBitMask = BitMaskType.panda
//与场景进行碰撞检测
self.physicsBody.contactTestBitMask = BitMaskType.scene

最后我们要在didBeginContact中写碰撞响应的代码

func didBeginContact(contact: SKPhysicsContact!) {
        //如果熊猫和场景边缘碰撞
        if (contact.bodyA.categoryBitMask|contact.bodyB.categoryBitMask) == (BitMaskType.scene | BitMaskType.panda) {
            println("游戏结束")
        }
}

项目文件地址

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

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

00 游戏预览

01 创建工程导入素材

02 创建熊猫类

03 熊猫跑动动画

04 熊猫的跳和滚的动作

05 踩踏平台是怎么炼成的

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

07 平台的移动

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

09 移除场景之外的平台

10 视差滚动背景

Swift游戏实战-跑酷熊猫 11 欢迎进入物理世界

时间: 2024-10-10 06:55:11

Swift游戏实战-跑酷熊猫 11 欢迎进入物理世界的相关文章

Swift游戏实战-跑酷熊猫 13 熊猫打滚

这节内容我们来实现熊猫打滚.思路是这样的,当熊猫起跳时记录他的Y坐标,落到平台上的时候再记录它的Y坐标.两个坐标之间的差要是大于一定数值就判断它从高处落下要进行打滚缓冲.至此跑酷熊猫已经像一个游戏的样子了 要点: 起跳y坐标: var jumpStart = 0.0 落地y坐标: var jumpEnd = 0.0 在didBeginContact方法中进行判断 panda.jumpEnd = panda.position.y if panda.jumpEnd-panda.jumpStart <

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

这节主要实现熊猫和平台的碰撞,实现熊猫在平台上奔跑 要点 对平台进行物理属性设置 //设置物理体以及中心点 self.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(self.width, self.height), center: CGPointMake(self.width/2, 0)) //设置碰撞标示符 self.physicsBody.categoryBitMask = BitMaskType.platform //不受碰

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

在这节里,我们将建立一个游戏工程,并导入一些必要的素材,例如序列帧动画文件,声音素材文件.动画文件我们使用atlas形式.在打包发布或者模拟器测试的时候,它会将整个.atlas文件夹下的图片打包成一张png图片. 要点: texture atlas :它包含了一组相关的texture.使用atlas可以提高性能 项目文件地址 http://yun.baidu.com/share/link?shareid=3824235955&uk=541995622 Swift游戏实战-跑酷熊猫系列 00 游戏

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

这个系列我们将要一起来做一个这样的游戏 Swift游戏实战-跑酷熊猫 00 游戏预览,布布扣,bubuko.com

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

这节内容我们来实现平台是怎么产生移动动画的. 要点 1 利用数组存放平台 var platforms=[Platform]() 2 有新的平台产生存放进数组 platforms.append(platform) 3 利用主场景的update方法不断地调用平台工厂类的move方法 override func update(currentTime: CFTimeInterval) { platformFactory.move(self.moveSpeed) } 4 move方法接收一个参数,是平台移

Swift游戏实战-跑酷熊猫 10 视差滚动背景

原理 实现 勘误 “实现”的视频中有个错误,如下 背景移动时有个错误,看红色部分,近景归位时,第二张图片的下标是1 if arrBG[0].position.x + arrBG[0].frame.width < speed{             arrBG[0].position.x = 0             arrBG[1].position.x = arrBG[0].frame.width   } 要点: 什么是视差滚动: 视差滚动(Parallax Scrolling)是指让多层

Swift游戏实战-跑酷熊猫 03 熊猫跑动动画

这节内容,我们一起来利用SKAction的来为熊猫创建动画,我们将学会通过纹理组产生动画,使用永远循环的SKAction让熊猫不停的跑动. 要点: 枚举的使用:用来记录熊猫的动作状态 enum Status:Int{ case run=1,jump,jump2,roll //当run被赋值为1的时候,后面的jump,jump2,roll会被自动赋值为2,3,4 } 通过序列帧纹理产生动画: SKAction.animatWithTextures(texture数组,播放的间隔时间) 永远循环动画

Swift游戏实战-跑酷熊猫 04 熊猫的跳和滚的动作

这节内容,我们利用上一节学过的内容,给熊猫添加跳和滚动的动作.同时通过重载touchBegan方法来响应动作.切换跑,跳,滚. 要点: 通过序列帧纹理产生动画: SKAction.animatWithTextures(texture数组,播放的间隔时间) 永远循环动画: SKAction.repeatActionForever() 点击事件 通过重载touchBegan方法来响应点击动作 override func touchbegan(touches :NSSet,withEvent even

Swift游戏实战-跑酷熊猫 02 创建熊猫类

原文:Swift游戏实战-跑酷熊猫 02 创建熊猫类 要点: 如何继承SKSpriteNode :子类必须调用SKSpriteNode的一个指定构造器 init(){ super.init(texture:texture,color:UIColor.whiteColor(),size:size) } 设置场景的背景颜色: self.backgroundColor = SKColor(red:113/255,green:197/255,blue:207,alpha:1) 熊猫类实例化以及定位 @l