zoukankan      html  css  js  c++  java
  • Cocos Creator之打鼓庆新年(下)

    上一篇《Cocos Creator之打鼓庆新年(上)》我们已经把首页场景做完了,今天我们就要开始制作打鼓游戏场景了。

    创建并进入游戏场景

    Scenes 中创建 Game 场景,双击 Game 场景进入游戏场景。

    添加背景图

    Home 场景中一样,我们需要做一下几个步骤:

    • Canvas 节点中创建 游戏 空节点;
    • 修改 游戏 节点的 Anchor 上的 y0.6445,让截掉的上部分显示出来;
    • 游戏 空节点上添加 Sprite 组件;
    • 然后将 Images 目录中的 game_bg.png 拖到 Sprite 中的 Sprite Frame 中;
    • 点击 工具栏 中的 ,打开浏览器进行预览;

    添加分数节点

    看上面的效果图,左上角有一个分数显示,玩家每点击一次,就加一次相应的分数。

    • Canvas 节点中创建 得分 空节点
    • 得分 节点中添加 Label 节点,重命名为 分数,并在右侧 Label 组件中,修改 String 属性的值为 分数:

    • 得分 节点中再添加一个 Label 节点,重命名为 0,并在右侧 Label 组件中,修改 String 属性的值为 0

    • 最后将位置修改好

    添加时间节点

    • Canvas 节点中创建 时间 空节点
    • 时间 节点中添加 Label 节点,重命名为 0:00,并在右侧 Label 组件中,修改 String 属性的值为 0:00
    • 最后将位置修改好

    添加打鼓娃娃节点

    在添加 打鼓娃娃 节点之前,我们需要将打鼓娃娃的动画图集用 TexturePackerGUI 制作出来,制作出来的文件为 click.plist,然后将 click.plist 文件放到 Images 中,和 click.plist 一起放进去的还有对应的图集 click.png

    • Canvas 节点中创建 Sprite 节点,重命名为 打鼓娃娃
    • click.plist 中选取初始状态的帧图片放到 Sprite Frame 中;

    打开浏览器预览动效果就是这样的:

    添加打击区域节点

    • Canvas 节点中创建 Sprite 节点,重命名为 打击区域
    • Images 中的 clickarea.png 添加到 打击区域Sprite Frame
    • 将节点位置设置好

    打开浏览器预览动效果就是这样的:

    小结

    到这里我们的游戏界面就做完了,现在要开始针对里面的业务逻辑进行开发,主要包括:倒计时点击打击区域打鼓动画点击打击区域添加分数

    倒计时

    • Scripts 目录中添加 CountDown.ts 脚本
    • 点击 0:00 节点,将 CountDown.ts 脚本拖到 0:00 右侧的 属性检查器
    • CountDown.ts 添加 time 属性,这样方便在编辑器中修改倒计时的时长。

    const {ccclass, property} = cc._decorator;
    
    @ccclass
    export default class CountDown extends cc.Component {
        
        //添加 time 属性,方便在编辑器中修改时长
        @property(cc.Integer)
        private time:number = 0;
        //存放 0:00 节点中的 Label 组件
        private nodeLabel:cc.Label;
        
        /*
            在 onLoad 中获取 0:00 节点中的 Label 组件
            然后将 Label 上的 string 属性值改为 time 中修改的值。
        */
        onLoad(){
            this.nodeLabel = this.node.getComponent(cc.Label);
            //游戏加载完成后设置倒计时时长
            this.nodeLabel.string = this.time + ":00";
        }
    
        start () {
    
        }
        
        /*
            在 update 中进行倒计时,每次帧变化的时候就减去帧刷新的时长,
            在 Cocos Creator 中 0.166 s帧刷新一次。
            将减去后的时间赋值到 nodeLabel 上
        */
        update (dt) {
            if(this.time > 0){
                this.time -= dt;
                this.nodeLabel.string = this.time.toFixed(2).replace(".",":");
            }else{
                this.time = 0;
                this.nodeLabel.string = this.time.toFixed(2).replace(".",":");
            }
        }
    }
    

    假设我们现在设置时长为 5,打开浏览器可以看到效果:

    点击打击区域打鼓动画和添加分数

    思路:打鼓的时候应该是点一下,左手打一下鼓,再点一下,右手打一下鼓,当不点击应该停止打鼓。根据我们的图集情况,可以看出,点击一下切换到左手打鼓图片,再点击一下切换到右手打鼓图片。

    • Scripts 中创建 beatDrum.ts 文件
    • 选中 打击区域,将 beatDrum.ts 拖到 打击区域 右侧的 属性检查器
    • beatDrum.ts 中添加 drumArea(打鼓娃娃Sprite 组件)beatAtlas(打鼓娃娃图集)beatScore(得分中 0 的Label组件) 属性
    • 将对应的节点拖到属性中

    代码如下:

    //打鼓娃娃的 Sprite 组件
    @property(cc.Sprite)
    private drumArea: cc.Sprite = null;
    //打鼓娃娃图集
    @property(cc.SpriteAtlas)
    private beatAtlas: cc.SpriteAtlas = null;
    //分数 Label 组件
    @property(cc.Label)
    private beatScore: cc.Label = null;
    //点击次数
    private beatnum = 0;
    onLoad(){
        //打击区域的 TouchStart 时间
        this.node.on(cc.Node.EventType.TOUCH_START,function(){
            // 获取图集中没有打击的帧
            let frame = this.beatAtlas.getSpriteFrame("noclick");
            /*
                点击次数为奇数用 leftclick 帧,也就是左手打鼓
                点击次数为奇数用 rightclick 帧,也就是右手打鼓
            */
            if(this.beatnum % 2){
                frame = this.beatAtlas.getSpriteFrame("leftclick")
            }else{
                frame = this.beatAtlas.getSpriteFrame("rightclick")
            }
            //将帧赋值到打鼓娃娃的 Sprite Frame 上 
            this.drumArea.spriteFrame = frame;
            //打击次数 +1
            this.beatnum += 1;
            /*
                分数就等于打击次数,这里粗略写的,也可以再
                加一个属性为总分数,每次点击的时候都计算总分数
            */
            this.beatScore.string = '' + this.beatnum;
        },this);
    }
    

    总结

    游戏讲解到这里就结束了,这个游戏做的比较粗略,基本的功能都实现了,大家如果有兴趣,可以在游戏中添加自己想要的功能。

    如果在开发过程中碰到问题,可以直接联系我!!

    如果我的讲解中有误或者不清楚的,也请大家直接联系我!!

    项目源码:打鼓庆新年

  • 相关阅读:
    Highcharts 柱图 每个柱子外围的白色边框
    进阶ES6 点滴认知
    layer 问题 汇总
    iframe 常见问题 解析
    【腾讯开源】前端预处理器语言图形编译工具 Koala使用指南
    ruby环境sass编译中文出现Syntax error: Invalid GBK character错误解决方法
    Sass 混合宏、继承、占位符 详解
    git 命令篇
    git 继续前进篇
    zh-cn en-uk、zh-tw表示语言(文化)代码与国家地区对照表(最全的各国地区对照表)
  • 原文地址:https://www.cnblogs.com/fws407296762/p/14426546.html
Copyright © 2011-2022 走看看