我们通常继承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. oracle语句块调用

    如果要写一个临时的语句块调用某个过程,可以参照以下方式: declare cursor v_is is select distinct aac001 from sic84 where aab001=5 ...

  2. Spring MVC整体处理流程

    一.spring整体结构 首先俯视一下spring mvc的整体结构 二.处理流程 1.请求处理的第一站就是DispatcherServlet.它是整个spring mvc的控制核心.与大多数的jav ...

  3. 转:git教程 ~~非常好的入门教程

    --------------------------------------- notes: cdmkdir dirnametouchls > filenamelsecho "this ...

  4. 【四】注入框架RoboGuice使用:(Your First System Service Injection)

    上一篇我们简单的介绍了一下RoboGuice的使用([三]注入框架RoboGuice使用:(Your First Resource Injection)),今天我们来看下系统服务的使用注解的方法: 为 ...

  5. leetcode第一刷_Binary Tree Inorder Traversal

    递归实现当然太简单,也用不着为了ac走这样的捷径吧..非递归实现还挺有意思的. 树的非递归遍历一定要借助栈,相当于把原来编译器做的事情显式的写出来.对于中序遍历,先要訪问最左下的节点,一定是进入循环后 ...

  6. [置顶] 图书推荐:SQL Server 2012 T-SQL基础 Itzik Ben-Gan

    经过近三个月的不懈努力,终于翻译完毕了.图书虽然是基础知识,但是,即使你已经使用T-SQL几年,很多地方还是能够弥补你的知识空白.大师级的人物写基础知识,或许你想知道这基础中还有哪些深奥,敬请期待吧. ...

  7. VSTO不能创建OFFICE 文档项目的原因

    正用的好好的,突然vsto不能用了.我是安装的vs2015 社区版本,本身是不带vsto的,当初不知道怎吗安装上的,昨天突然不能用了.症状是创建excel workbook 类型的项目是失败(创建ad ...

  8. zoj3713 7Bit

    意思是把一行字符串的长度按照找7位一个字节输出,如果长度能够存在7位里,字节的最高位置0,否则只输出7位并且输出字节的最高位置1,直到全部输出长度. 要注意的是有空串要输出00,其他按照16进制输出就 ...

  9. Qt持久性对象进行序列化(同时比较了MFC与Java的方法)

    Mfc和Java中自定义类的对象都可以对其进行持久性保存,Qt持久性对象进行序列化当然也是必不可少的.不过这个问题还真困扰了我很长时间……Mfc通过重写虚函数Serialize().Java则是所属的 ...

  10. 实战 iTextSharp

    原文 实战 iTextSharp iTextSharp 是用来生成  PDF 的一个组件,在 1998 年夏天的时候,Bruno Lowagie ,iText 的创作者,参与了学校的一个项目,当时使用 ...