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

之前我们学会了跑的动作,现在我们可以利用同样的方法来实现了跳和打滚的动画。

……

class Panda : SKSpriteNode {

   ……

    //跳的纹理集合

    let jumpAtlas = SKTextureAtlas(named: "jump.atlas")

    //存储跳的文理的数组

    let jumpFrames = [SKTexture]();

    //打滚的文理集合

    let rollAtlas = SKTextureAtlas(named: "roll.atlas")

    //存储打滚文理的数组

    let rollFrames = [SKTexture]();

    var status = Status.run

    //构造器

    override init(){

        ……

        //填充跳的纹理数组

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

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

            let jumpTexture = jumpAtlas.textureNamed(tempName)

            if jumpTexture != nil {

                jumpFrames.append(jumpTexture)

            }

        }

        //填充打滚的纹理数组

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

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

            let rollTexture = rollAtlas.textureNamed(tempName)

            if rollTexture != nil{

                rollFrames.append(rollTexture)

            }

        }

    }

    func run(){

       ^

    }

    //跳

    func jump (){

        self.removeAllActions()

        status = .jump

        self.runAction(SKAction.animateWithTextures(jumpFrames, timePerFrame: 0.05))

    }

    //打滚

    func roll(){

        self.removeAllActions()

        status = .roll

        self.runAction(SKAction.animateWithTextures(rollFrames, timePerFrame: 0.05),completion:{() in self.run()})

    }

    required init(coder aDecoder: NSCoder) {

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

    }

}

注意:

由于跳和打滚的动作不像跑的动作需要循环播放,所以就不需要用repeatActionForever。打滚动作结束后就执行跑步动作。而跳跃动作由于不知道什么时候落地,所以将会由外部控制它的动作转变。

完成了以上的代码,我们怎么能验证我们的代码没有错呢?让我们打开GameScene,写一个响应屏幕点击的方法,简单的写个逻辑来测试跳和打滚动作没写错。代码如下:

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
//当熊猫状态为跑的时候播放跳的动作
if panda.status == Status.run {
panda.jump()
}else if panda.status == Status.jump {
//当状态为跳的时候,执行打滚动画
panda.roll()
}
}

运行代码,我们会发现跑跳滚的动画都很正确的执行了。当然这段代码只是演示用的,过后要删除。

我的微信公众号

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

时间: 2024-10-07 07:44:32

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

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

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

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

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

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

学习目标 一.进一步学习Swift的游戏制作 二.掌握SKNode,SKSpriteNode的运用 三.了解SpriteKit的物理系统 四.掌握动作(SKAction)的运用 在这一章,我们要通过制作跑酷熊猫这个游戏来进一步学习Swift的游戏开发.首先我们要知道自己将要编写的是一个什么样的游戏.先来看一下游戏截图. 跑酷熊猫是一个跑酷类的游戏.我们将操控熊猫这个胖纸施展轻功,在或长或短的平台上飞奔,同时还要收集小苹果.跑的越远,收集的苹果越多,成就越高.不小心掉落平台,游戏就失败.那么做这样

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

在上个小节,我们完成了平台的产生.那么我们来实现一下让平台移动.平台的移动,我们只需要在平台工厂类中写好移动的方法,然后在GameScene类中统一控制就行了. 在GameScene类中,有个update方法会每隔一定的时间调用,用来控制平台的移动再适合不过了. 首先,我们在GameScene类中定义一个移动速度: //移动速度 var moveSpeed:CGFloat = 15 然后在update方法方法中调用平台工厂类的移动方法: override func update(currentT

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

当我们创建好项目文件后我们就可以开始一步一步的按照我们之前列入的清单来编写我们的游戏.现在就让我们来创建一个熊猫这个类Panda.swift.我们将采取分解的方式,一步一步的完成Panda.swift的编写 首先,我们要导入SpriteKit框架 import SpriteKit 接着我们创建一个枚举值,用来记录熊猫的不同状态,分别是跑,跳,二段跳,打滚. enum Status:Int{ case run=1,jump,jump2,roll; } 注意: 在Swift中,当给枚举的首个名称设置

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

一个静态的熊猫明显不能满足我们的欲望,接下来我们就让熊猫跑起来.序列帧动画的原理就是不停的切换不同的图片.当我们将一张一张的切换Panda类的跑动文理后,熊猫就跑起来了.那么首先我们需要一个数组常量来储存跑动动画文理,还有一个变量来记录熊猫当前的动作状态. let runFrames = [SKTexture]() //动作状态,默认值为枚举中的跑 var status = Status.run 然后我们通过for循环获取跑动动画的所有文理存入runFrames中.由于我们使用了SKTextur

我写了本破书-swift语言实战晋级

本书是一本介绍Swift实战的实用图书,旨在帮有一定编程基础的童鞋能够快速上手Swift. 本书的结构是先讲解了Swift语言的精要,没有基础的童鞋可以学习,有基础的童鞋可以当做复习. 接着讲解如何用Swift控制UIKit控件. 实战分为两部分,第一部分是基于UIKit的应用实例.第二部分是基于SpriteKit的游戏编程.两部分的实战都是采取循序渐进的方式安排从简到繁的实例.在讲解实例的时候采取的是迭代的方式,先构建基础,然后一点一点完善功能. 京东购买链接:http://item.jd.c

Swift游戏实战-跑酷熊猫 01 创建工程导入素材

在这节里,我们将建立一个游戏工程,并导入一些必要的素材,例如序列帧动画文件,声音素材文件.动画文件我们使用atlas形式.在打包发布或者模拟器测试的时候,它会将整个.atlas文件夹下的图片打包成一张png图片. 要点: texture atlas :它包含了一组相关的texture.使用atlas可以提高性能 项目文件地址 http://yun.baidu.com/share/link?shareid=3824235955&uk=541995622 Swift游戏实战-跑酷熊猫系列 00 游戏

Swift游戏实战-跑酷熊猫 00 游戏预览

这个系列我们将要一起来做一个这样的游戏 Swift游戏实战-跑酷熊猫 00 游戏预览,布布扣,bubuko.com