博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift语言实战晋级-第9章 游戏实战-跑酷熊猫-4 熊猫的跳和打滚
阅读量:6248 次
发布时间:2019-06-22

本文共 1930 字,大约阅读时间需要 6 分钟。

原文:

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

 

…… 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()}}

 

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

 

我的微信公众号

转载地址:http://zeoia.baihongyu.com/

你可能感兴趣的文章
Python--分析微信好友是否被删除
查看>>
MYSQL一些字符串的处理,如拼接,截取等,便于用在同一字段中多个值的处理...
查看>>
网络工程师
查看>>
在C#下的SQL模糊查询语句 (Visual Studio)
查看>>
第三章 广域通信网
查看>>
xhtml+css基础知识2
查看>>
我的友情链接
查看>>
Java环境变量配置
查看>>
Magent搭建Memcached集群
查看>>
SQL Server远程备份报错:Operating system error 1326
查看>>
域名转移和域名DNS修改
查看>>
域名查找及错误检查
查看>>
JavaScript 字符串处理详解
查看>>
Linux 查看系统硬件信息(实例详解)
查看>>
Linux系统开发8 线程
查看>>
我的友情链接
查看>>
linux安装过程对硬盘进行分区
查看>>
linux安装eclipse集成开发环境
查看>>
像少年啦飞驰
查看>>
Advanced+Apple+Debugging(1)
查看>>