当我们创建好项目文件后我们就可以开始一步一步的按照我们之前列入的清单来编写我们的游戏。现在就让我们来创建一个熊猫这个类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) }
我的微信公众号