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

要点:

设置物理检测的代理:

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

self.physicsWorld.contactDelegate = self

设置重力:

self.physicsWorld.gravity = CGVectorMake(, -)

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

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 =
//设置标识符
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 视差滚动背景

05-04 11:23