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

动画纹理集的制作也很简单,首先要有一套动画序列图,然后把它们放到一个文件夹下,最后把文件夹改名为*.atlas后缀就行了。
下面通过一个“神经猫”动画元件来演示:

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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 ---

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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) {
         
    }
}

Swift - 使用atlas图集实现动画效果(SpriteKit游戏开发)的更多相关文章

  1. Swift - 多层无缝循环滚动背景(SpriteKit游戏开发)

    在游戏开发中,比如跑酷游戏.我们需要实现背景的无限循环滚动,来营造运动的效果.除了单层的背景滚动,还有视差滚动. 视差滚动是指让多层背景以不同的速度移动,形成立体的效果,从而带来非常出色的视觉体验. ...

  2. Swift - 多个mask的动画效果

    Swift - 多个mask的动画效果 效果 源码 https://github.com/YouXianMing/Swift-Animations // // TranformFadeView.swi ...

  3. Swift - 用UIScrollView实现视差动画效果

    Swift - 用UIScrollView实现视差动画效果 效果 源码 https://github.com/YouXianMing/Swift-Animations // // MoreInfoVi ...

  4. Swift 添加到TableView实现动画效果

    let indexPath = NSIndexPath(forRow:0 ,inSection:0) self.tableView.insertRowsAtIndexPaths([indexPath] ...

  5. Swift - 跑酷游戏开发(SpriteKit游戏开发)

    一,下面演示了如何开发一个跑酷游戏,实现的功能如下: 1,平台工厂会不断地生成平台,并且向左移动.当平台移出游戏场景时就可将其移除. 2,生成的平台宽度随机,高度随机.同时短平台踩踏的时候会下落. 3 ...

  6. Swift - 跳跃吃苹果游戏开发(SpriteKit游戏开发)

    下面通过一个样例演示如何实现飞行道具的生成,以及道具碰撞拾取. 样例说明: 1,屏幕从右到左不断地生成苹果飞过来(苹果高度随机) 2,点击屏幕可以让熊猫跳跃 3,熊猫碰到苹果,苹果消失 运行效果: 样 ...

  7. Swift - 给游戏添加背景音乐和音效(SpriteKit游戏开发)

    游戏少不了背景音乐和音效.下面我们通过创建一个管理音效的类,来实现背景音乐的播放,同时点击屏幕可以播放相应的音效. 声音管理类 SoundManager.swift 1 2 3 4 5 6 7 8 9 ...

  8. Swift - 在界面上生成81个随机红,灰色圆点(SpriteKit游戏开发)

    下面是生成一个“围住神经猫”游戏的初始场景: 1,界面下方会生成9*9共81个圆点,同时圆点内部添加文本标签显示索引 2,默认圆点为灰色,每行随机取两个点变为红色 3,奇数行和偶数行有一定的错位,错位 ...

  9. Swift - 获取屏幕点击坐标下所有对象(SpriteKit游戏开发)

    对于场景内对象元件的点击响应,我们可以在场景的touchesBegan()方法中内统一处理. SKScene中touchesBegan()是响应屏幕点击的方法,在这里面我们可以先获取点击位置下所有的对 ...

随机推荐

  1. 【论文阅读】Parsing Clothing in Fashion Photographs(翻译与理解)

    发表于2012年 作者:Kota Yamaguchi M.Hadi Kiapour Luis E.Ortiz Tamara L.Berg 摘要:展示了一个从时装图片中解析衣服的有效方法,提供了一个一般 ...

  2. [转]如何从MySQL官方Yum仓库安装MySQL5.6

    参考博文: 如何从MySQL官方Yum仓库安装MySQL5.6 Centos 升级Mysql版本或者Yum安装Mysql5.6 2013年10月,MySQL开发团队正式宣布支持Yum仓库,这就意味着我 ...

  3. Java 重入锁 ReentrantLock

    本篇博客是转过来的. 但是略有改动感谢 http://my.oschina.net/noahxiao/blog/101558 摘要 从使用场景的角度出发来介绍对ReentrantLock的使用,相对来 ...

  4. net core开发环境准备

    net core开发环境准备 1.1  安装sdk和运行时 浏览器打开网址https://www.microsoft.com/net/download, 到.Net Core下载页面. 根据操作系统, ...

  5. Pathchirp—有效的带宽估计方法(二)

    上一个blog介绍了有效带宽估计方法:pathload.http://blog.csdn.net/ice110956/article/details/11126491. 做一个小小的总结:pathlo ...

  6. 设计模式 ( 十六 ) 观察者模式Observer(对象行为型)

    设计模式 ( 十六 ) 观察者模式Observer(对象行为型) 1.概述 一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力.当对象们连接在一起时,它们就可以相互提供服务和信息. 通常来 ...

  7. ios创建画笔的样例(双笔画效果)

    定义一个UIView:主要是在这个View里面加一个UIImageView,绘图都在这个UIImageView里面进行 @property(nonatomic) CGPoint prePoint; / ...

  8. 《HTML 5网页开发实例具体解释》文件夹

    第一篇  从宏观上认识HTML 5 讲述了HTML 5引发的Web革命.HTML 5的总体特性.HTML 5相关概念和框架和开发环境搭建. 第1章 HTML 5引发的Web革命 1.1  你是不是真的 ...

  9. java--函数练习

    /* 1,定义一个功能,用于打印矩形 1,定义一个打印九九乘法表功能的函数 */ class FunctionTest { public static void main(String[] args) ...

  10. 关于UIText换行

    话不多说,直接上代码 --代码是lua的,c++也一样 local text = ccui.Text:create("text can line wrap text can line wra ...