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

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

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

     

首先,我们要导入SpriteKit框架

import SpriteKit

 

接着我们创建一个枚举值,用来记录熊猫的不同状态,分别是跑,跳,二段跳,打滚。

 

enum Status:Int{
case run=1,jump,jump2,roll;
}

 

注意:

在Swift中,当给枚举的首个名称设置整型值时,接下来的名称会自动顺序填充。例如上面的run=1之后,jump就为2,jump2就为3,roll就为4

 

然后我们要让Panda这个类继承自SKSpriteNode

class Panda : SKSpriteNode

 

 

这时候,Panda.swift的完整代码应该是这样的。

import SpriteKit

enum Status:Int{
case run=1,jump,jump2,roll;
}

class Panda : SKSpriteNode{

}

 

完场了以上步骤之后,我们先来实现一个简单地功能,让熊猫显示在场景中。我们只需要在构造器中给Panda的父类也就是SKSpriteNode的构造器传入3个参数。分别是文理(texture)默认颜色(color),默认尺寸(size)。那么我们要做的是先写一个常量用来获取跑这个动作的文理集合

let runAtlas = SKTextureAtlas(named: "run.atlas")

 

接着在构造器中用跑这个动画的第一张文理作为默认的文理。

let texture = runAtlas.textureNamed("panda_run_01")

 

然后用这个纹理的尺寸作为Panda类的默认尺寸

let size = texture.size()

 

再用SKColor.whiteColor()获取白色的色值

 

最后用这些作为参数传给Panda的父类也就是SKSpriteNode的构造器。

super.init(texture:texture,color:SKColor.whiteColor(),size:size)

 

这时候完整的代码应该是这样的

import SpriteKit

enum Status:Int{
    case run=1,jump,jump2,roll;
}

class Panda : SKSpriteNode {
    let runAtlas = SKTextureAtlas(named: "run.atlas")

    //构造器
    override init(){
    	let texture = runAtlas.textureNamed("panda_run_01")
    	let size = texture.size()
   		super.init(texture:texture,color:SKColor.whiteColor(),size:size)
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

 

当我们写完了上面的代码,我们就要在游戏场景GameScene.swift中将熊猫显示出来。那我们就先要在场景类中声明一个变量,类型是我们刚刚创建的Panda。

lazy var panda = Panda()

 

注意:

用lazy属性可以让变量在第一次使用的时候才实例化,这可以让场景类在创建的时候减少开销。

 

然后在didMoveToView方法中写入如下代码就能够将熊猫显示在屏幕上了。

let skyColor = SKColor(red:113/255,green:197/255,blue:207/255,alpha:1)//场景的背景颜色
self.backgroundColor = skyColor
panda.position = CGPointMake(200, 400)//给熊猫定一个初始位置
self.addChild(panda)//将熊猫显示在场景中

 

按下command+r键,运行一下看看效果

恭喜你,我们勇敢的迈出了第一步。此时我们的场景类中的完整代码应该是这样的:

import SpriteKit

class GameScene: SKScene,ProtocolMainScene {
    lazy var panda = Panda()
override func didMoveToView(view: SKView) {
		//场景的背景颜色
let skyColor = SKColor(red:113/255,green:197/255,blue:207/255,alpha:1)        self.backgroundColor = skyColor
         //给熊猫定一个初始位置
        panda.position = CGPointMake(200, 400)
		//将熊猫显示在场景中
        self.addChild(panda)
}

 

我的微信公众号

我写的破书:《Swift语言实战晋级》http://item.jd.com/11641501.html

时间: 2025-01-20 09:45:05

Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-2 创建熊猫类的相关文章

Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-1

原文:Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-1 学习目标 一.进一步学习Swift的游戏制作 二.掌握SKNode,SKSpriteNode的运用 三.了解SpriteKit的物理系统 四.掌握动作(SKAction)的运用   在这一章,我们要通过制作跑酷熊猫这个游戏来进一步学习Swift的游戏开发.首先我们要知道自己将要编写的是一个什么样的游戏.先来看一下游戏截图.   跑酷熊猫是一个跑酷类的游戏.我们将操控熊猫这个胖纸施展轻功,在或长或短的平台上飞奔,同时还要收集小苹果.跑的

Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫

原文:Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-3 显示一个动态的熊猫     一个静态的熊猫明显不能满足我们的欲望,接下来我们就让熊猫跑起来.序列帧动画的原理就是不停的切换不同的图片.当我们将一张一张的切换Panda类的跑动文理后,熊猫就跑起来了.那么首先我们需要一个数组常量来储存跑动动画文理,还有一个变量来记录熊猫当前的动作状态. let runFrames = [SKTexture]()   //动作状态,默认值为枚举中的跑 var status = Status.run    

Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-4 熊猫的跳和打滚

原文:Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-4 熊猫的跳和打滚 之前我们学会了跑的动作,现在我们可以利用同样的方法来实现了跳和打滚的动画.   -- class Panda : SKSpriteNode { -- //跳的纹理集合 let jumpAtlas = SKTextureAtlas(named: "jump.atlas") //存储跳的文理的数组 let jumpFrames = [SKTexture](); //打滚的文理集合 let rollAtlas =

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

原文:swift语言实战晋级-第9章 游戏实战-跑酷熊猫-7-8 移动平台的算法 在上个小节,我们完成了平台的产生.那么我们来实现一下让平台移动.平台的移动,我们只需要在平台工厂类中写好移动的方法,然后在GameScene类中统一控制就行了. 在GameScene类中,有个update方法会每隔一定的时间调用,用来控制平台的移动再适合不过了. 首先,我们在GameScene类中定义一个移动速度:   //移动速度 var moveSpeed:CGFloat = 15   然后在update方法方

swift语言实战晋级-第9章 游戏实战-跑酷熊猫-9-10 移除平台与视差滚动

原文:swift语言实战晋级-第9章 游戏实战-跑酷熊猫-9-10 移除平台与视差滚动 9.9 移除场景之外的平台       用为平台是源源不断的产生的,如果不注意销毁,平台就将越积越多,虽然在游戏场景中看不到.几十个还看不出问题,那几万个呢?几百万个呢?     所以我们来看看怎么移除平台,那什么样的平台需要移除呢?又如何移除呢?之前我们也说过,当平台完全移除游戏场景的时候就可以进行移除操作了.需要做两个操作,1从平台工厂类中移除,2从平台数组中移除. 而且,因为平台是一个接一个出现的,所以

Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-5-6 踩踏平台是怎么炼成的

原文:Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-5-6 踩踏平台是怎么炼成的     在游戏中,有很多分来飞去的平台,这个平台长短不一.如果每种长度都去创建一张图片那是比较繁琐的事情.实际上,我们只用到3张图.分别是平台的,平台的中间部分,平台的右边.关键是平台的中间部分,两张中间部分放在一起能够很好地衔接起来,这样只要增加中间部分的数量就能创建不同长度的平台.那这种图片该怎么制作呢?我们先找一张平台的完整图     然后切出中间部分.   这时候,我们能够发现,两块中间部分能够无缝的

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) 熊猫类实例化以及定位

Swift游戏实战-跑酷熊猫 06 创建平台类以及平台工厂类

原文:Swift游戏实战-跑酷熊猫 06 创建平台类以及平台工厂类   这节内容我们一起学习下随机长度的踩踏平台的原理是怎么样的. 要点: 平台类 我们的平台类继承于SKNode,这样就能被添加进其它节点进而显示在场景中. 它有一个方法来创建平台,这个方法接收一个包含SKSpriteNode的数组.将数组里面的对象横向拼接在一起组成一个完整的平台.同时计算出平台的宽度 onCreate(arrSprite:[SKSpriteNode]){ for platform in arrSprite{ p

《Swift开发实战》——第2章,第2.5节对象和类

2.5 对象和类 在Swift语言中,使用关键字class和类名来创建一个类.在类中声明属性的方法和声明常量.变量的方法一样,唯一的区别就是它们的上下文是类.同样,声明方法和声明函数的方法也一样.例如,下面的演示代码定义了一个名为Shape的类. class Shape { var numberOfSides = 0 func simpleDescription() -> String { return "A shape with \(numberOfSides) sides."