spritekit 动画_Swift - 使用atlas图集实现动画效果(SpriteKit游戏开发)

本文介绍了如何在SpriteKit中利用.atlas图集制作动画,通过创建神经猫类`Cat.swift`展示如何加载动画纹理集并循环播放动画。在`GameScene.swift`中展示了元件的使用方法,当场景加载时,添加神经猫动画到场景中。
摘要由CSDN通过智能技术生成

我们通常继承SKSpriteNode来实现游戏中的元素,除了可以使用图片作为纹理皮肤外。我们还可以使用动画纹理集来实现动画播放。

动画纹理集的制作也很简单,首先要有一套动画序列图,然后把它们放到一个文件夹下,最后把文件夹改名为*.atlas后缀就行了。

下面通过一个“神经猫”动画元件来演示:

--- 神经猫类 Cat.swift ---

import SpriteKit

class Cat:SKSpriteNode{

//神经猫的纹理集

let dbAtlas = SKTextureAtlas(named: "db.atlas")

//神经猫的纹理数组

var dbFrames = [SKTexture]()

override init() {

//获取纹理集的第一个纹理

let texture = dbAtlas.textureNamed("db_01")

//获取纹理的尺寸

let size = texture.size()

//执行父类的构造方法

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

var i:Int

var tempName:String

//从纹理集中获取纹理加入数组

for i=1 ; i <= dbAtlas.textureNames.count ; i++ {

//%.2d表示两位整数。下面格式化完毕后便是db_01,db_02,db_03等

tempName = String(format:"db_%.2d",i)

let dbTexture = dbAtlas.textureNamed(tempName)

dbFrames.append( dbTexture )

}

//设置中心点

self.anchorPoint = CGPointMake(0.5, 0.2)

//播放动画

db()

}

required init(coder aDecoder: NSCoder) {

fatalError("init(coder:) has not been implemented")

}

func db(){

//循环播放纹理动画

self.runAction(SKAction.repeatActionForever(

SKAction.animateWithTextures(dbFrames, timePerFrame: 0.2)))

}

}

--- 元件使用 GameScene.swift ---

import SpriteKit

class GameScene: SKScene {

//利用lazy关键字可以让实例化在第一次使用时才执行

lazy var cat = Cat()

//当切换到这个场景视图后

override func didMoveToView(view: SKView) {

cat.position = CGPoint(x:CGRectGetMidX(self.frame)-10, y:CGRectGetMidY(self.frame)-150);

cat.zPosition = 20

self.addChild(cat)

}

//响应屏幕点击的方法

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值