Cocos creator小游戏实现套牛小游戏资源及代码

news2024/11/26 17:42:54

Cocos creator实现套牛小游戏资源及代码

      • 一 安装CocosDashBoard
      • 二 新建2D项目RunCow
        • 1、管理项目目录
        • 2、搭建界面
      • 三 上线微信小游戏
        • 1、上线微信小游戏
        • 2、Cocos Creator代码打包上传
        • 3、上线微信小游戏出现问题

Cocos creator小游戏实现套牛小游戏资源及代码
最近在学习Cocos Creator,作为新手,刚刚开始学习Cocos Creator,上线了两个微信小游戏,刚刚入门,这里记录一下《小绳套牛》实现及上线过程的过程。

在这里插入图片描述在这里插入图片描述

一 安装CocosDashBoard

这里就不介绍如何安装了

本案例使用的是编译器版本为2.4.10

二 新建2D项目RunCow

1、管理项目目录

在资源管理器中新建文件夹

  • anim 动画
  • preb 预制体
  • res 图片、语音资源
  • scene 场景
  • scripts 脚本资源

将资源文件拖到res目录下

2、搭建界面

该案例中的场景界面为主界面main_scene、游戏界面game_scene.fire、关卡界面

在入口主界面中有进入游戏,绑定Touch时间,点击进入加载game场景
代码如下:

 // start动画
    btnStartAnimated() {
        this.btnStart.node.scale = 1.0;
        this.btnStart.node.runAction(cc.repeatForever(cc.sequence(
            cc.scaleTo(0.6, 1.2),
            cc.scaleTo(0.6, 1.0)
        )));
    }

    btnStartPlay() {
        this.selectLevel();
        this.loadingBar.node.active = true;
        this.btnStart.node.active = false;
        this.loadingBar.progress = 0;
        this.loadingBar.barSprite.fillRange = 0;
        cc.loader.onProgress = (count, amount, item) => {
            if (this.isFinished == false) {
                let progress = Number((count / amount).toFixed(2));
                if (progress > this.loadingBar.barSprite.fillRange) {
                    this.loadingBar.barSprite.fillRange = count / amount;
                }
            }
        };
        cc.director.preloadScene("game_scene", function () {
            if (this.isFinished == false) {
                this.loadingBar.node.active = false;
                this.btnStart.node.active = false;
                console.log("加载成功");
            }

            cc.director.loadScene("game_scene");
            this.isFinished = true;
        }.bind(this));
    }

进入游戏主场景game_scene中
绑定节点

创建奔跑的牛,这里用到牛的预制体,设置schedule定时器,创建奔跑的牛

createCow() {
        if (!this.checkShouldSchdule()) {
            return;
        }

        if (this.curCowType == 0) {
            this.curCowType = 1;
        } else if (this.curCowType == 1) {
            this.curCowType = 2;
        } else if (this.curCowType == 2) {
            this.curCowType = 0;
        }

        let cow = cc.instantiate(this.cowPreb).getComponent(CowRun);
        cow.cowType = this.curCowType;
        cow.node.setPosition(cc.v2(this.canvasWidth, -60));
        this.cowRoot.addChild(cow.node);
    }


    // 倒计时
    beginSchedule() {
        this.schedule(this.onCountDown, this.interval);
    }

    onCountDown() {
        if (!this.checkShouldSchdule()) {
            return;
        }

        this.countDuration--;
        if (this.countDuration < 0) {
            // 游戏结束,弹出游戏结束提示
            this.showGameOver();

            this.stopSchedule();

            this.countDuration = 0;
        }

        this.countDownLB.string = this.countDuration + "s";
    }

    stopSchedule() {
        this.unschedule(this.onCountDown);
        this.unschedule(this.createCow);
    }

奔跑的牛使用的是动画编辑器来设置的动画,通过不同类型的牛来播放不动的奔跑动画
RunCow.ts
代码如下

playAnim() {
        let anim = this.getComponent(cc.Animation);
                
        if (this.cowType == 0) {
            let animState = anim.play('cow1');
            animState.speed = 2;
        } else if (this.cowType == 1) {
            let animState = anim.play('cow2');
            animState.speed = 2;
        } else {
            let animState = anim.play('cow3');
            animState.speed = 2;
        }
    }

    update (dt) {
        this.node.x -= this.speed*dt;
        if (this.node.x < -this.canvasWidth) {
            this.node.removeFromParent();
        }
    }

当牛奔跑超出左侧界面外,则将移出该节点this.node.removeFromParent

套绳的动画
套牛的绳子有不同的类型,默认抛出绳子后拉回套中的牛
这里执行this.cowRope.runAction一连串动作
代码如下

// 套牛的动作
    throwCow() {
        if (!this.checkShouldSchdule()) {
            return;
        }

        if (this.isThrowing) {
            return;
        }

        this.cowRope.getComponent(cc.Sprite).spriteFrame = this.ropeImgs[0];
        this.isThrowing = true;

        // 默认在屏幕外
        this.cowRope.y = - this.canvasHeight;

        // 移出去
        let mTop = cc.moveTo(0.45, cc.v2(0, 68 - this.cowRope.height / 2));

        // 套住牛
        let mFun = cc.callFunc(function () {
            // 判断是否套住了牛
            let cowRun = this.checkTakeCow();
            if (cowRun) {
                let cowType = cowRun.getComponent('CowRun').cowType;

                // 由于动作
                let ropeType = this.getRopeType(cowType);
                console.log("cowType:" + cowType + ",ropeType:" + ropeType);
                // 更换绳子样式
                this.cowRope.getComponent(cc.Sprite).spriteFrame = this.ropeImgs[ropeType];

                cowRun.active = false;
                cowRun.removeFromParent();

                // 更新分数
                this.score++;

                // 播放声音
                this.playCowSound();
            }
        }.bind(this));

        // 拖回
        let md = cc.moveTo(0.85, cc.v2(0, -this.canvasHeight));

        // 动作结束
        let finish = cc.callFunc(function () {
            this.isThrowing = false;
            let showScore = this.score + "/" + this.currentLevelInfo['cow'];
            this.starCollector.updateScore(showScore);
            let needCow = this.currentLevelInfo['cow'];
            console.log("this.score:" + this.score + "--needCow:" + needCow);
            if (this.score >= needCow) {
                // 通关
                this.winCurLevel();
            }
        }.bind(this));

        let seq = cc.sequence([mTop, mFun, md, finish]);
        this.cowRope.runAction(seq);
    }

下面判断套中牛儿判断,当牛头移动到中间位置

// 检测是否套住了牛
    checkTakeCow() {
        for (let index = 0; index < this.cowRoot.childrenCount; index++) {
            let cowRun = this.cowRoot.children[index];
            if (cowRun.active == true && (cowRun.x >= 50 && cowRun.x <= 160)) {
                return cowRun;
            }
        }

        return null;
    }

套中牛儿之后,根据套中的不同的牛更换拉回的绳子的样式

// 更换绳子样式
this.cowRope.getComponent(cc.Sprite).spriteFrame = this.ropeImgs[ropeType];

至此主要代码差不多这些,套牛的逻辑比较简单。稍后贴出资源及代码地址。

三 上线微信小游戏

在https://mp.weixin.qq.com 创建账号并登录,这里注意选择小程序的账号哦,需要绑定微信。
登录之后,在小游戏基本设置,设置一下内容

1、上线微信小游戏

小程序名称
小程序简称
小程序头像
小程序服务类目

在游戏设置中需要设置 上传小游戏自审自查文档照片,签字,日期,按手印哦。

2、Cocos Creator代码打包上传

在Cocos Creator的菜单的项目中,构建发布

选择发布平台,微信小游戏
根据游戏的横竖屏设置方向
设置appid(来自微信小程序后台)

最后点击构建,点击构建成功后。使用微信开发工具导入编译build后的项目。在微信开发工具中预览可以手机扫码看到游戏的开发版本。
上传游戏、提交版本及更新内容,上传成功后可以在微信小程序后台的版本管理中看到上传新版本。点击提交审核即可。

3、上线微信小游戏出现问题

上线微信小游戏经常出现“小游戏需具有完整的游戏玩法、不能为简单的素材堆砌”
根据这个问题,在案例中新增了关卡、游戏玩法介绍后重新发布新的版本,继续等待审核即可。暂时这么审核通过了。

学习记录,每天不停进步。

代码和资源
https://gitee.com/baibaime/run-cow

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/529345.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

23案例P135-员工部门增删改查实现

一、准备工作 需要完成tlias的部门管理和员工管理 创建tlias数据库&#xff0c;导入 -- 部门管理 create table dept(id int unsigned primary key auto_increment comment 主键ID,name varchar(10) not null unique comment 部门名称,create_time datetime not null commen…

软件I2C读写MPU6050代码

1、硬件电路 SCL引到了STM32的PB10号引脚&#xff0c;SDA引到了PB11号引脚软件I2C协议&#xff1a; 用普通GPIO口&#xff0c;手动反转电平实现协议&#xff0c;不需要STM32内部的外设资源支持&#xff0c;故端口是可以任意指定MPU605在SCL和SDA自带了两个上拉电阻&#xff0c;…

漏刻有时地理信息系统说明文档(LOCKGIS、php后台管理、三端一体PC-H5-微信小程序、百度地图jsAPI二次开发、标注弹窗导航)

漏刻有时地理信息系统LOCKGIS 前言一、运行环境&#xff08;一&#xff09;环境检查&#xff08;二&#xff09;权限检查&#xff08;三&#xff09;函数支持&#xff08;四&#xff09;域名相关 二、核心代码&#xff08;一&#xff09;坐标展示&#xff08;二&#xff09;实时…

Excel快捷键大全(2023最新版总结)

案例&#xff1a;Excel快捷键大全 【作为一名打工人&#xff0c;我总是要用到Excel表格&#xff0c;大家平常在使用Excel时都有什么比较好用的快捷键推荐吗&#xff1f;】 Excel是一款功能强大的电子表格软件&#xff0c;可以用于数据管理、计算、分析和报表生成等多种任务。…

HDFS的数据流

1.HDFS写数据流程 &#xff08;1&#xff09;客户端通过Distributed FileSystem模块向NameNode请求上传文件&#xff0c;NameNode检查目标文件是否已存在&#xff0c;父目录是否存在。 &#xff08;2&#xff09;NameNode返回是否可以上传。 &#xff08;3&#xff09;客户端…

Shell系统编程三剑客之----AWK

目录 1.AWK工具简介 2.AWK的基本格式 3.AWK工作原理 4.常见的内建变量&#xff08;可直接用&#xff09; 二&#xff1a; AWK实例 1.按行输出文本 2.按字段输出文本 3.通过管道、双引号调用 Shell 命令 4.date命令输出时间 5. 查看内存使用占比 6.查看cpu使用占比 7.…

【linux】shell编程—快捷命令

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、快捷排序 - sort二、快捷去重 - uniq三、快捷替换 - tr四、快速裁剪 - cut五、文件拆分 - split六、文件合并 - paste七、变量扫描器 - eval 一、快捷排序 - so…

5个良心好用的Windows神级软件,让你打开新世界的大门

今天再次推荐5个良心好用的Windows神级软件&#xff0c;每一个都是完全免费&#xff0c;堪称神器&#xff0c;让你打开新世界的大门。 1.PPT插件——OneKeyTools OK插件是一款免费的PPT插件&#xff0c;让你的PPT制作有无限可能&#xff01;它的功能&#xff0c;太多了&#…

CoCo数据集-目标检测指标MAP

文章目录 一、前言二、评价指标的一些概念2.1.一些概念2.2.概念介绍2.3.MAP求解 三、理解CoCo的评价指标四、总结五、学习视频、Coco官方地址 一、前言 前面学习了coco数据集但是不知道它的评价指标&#xff0c;所以写下来作为自己的笔记&#xff0c;以后还是直接在这写好再保…

算法设计期末考试

算法设计期末考试 1.分治法3选11.1全排列1.2二分法--金块问题1.3子数组换位问题 2.贪心选2题2.1 活动安排2.2 活动安排&#xff08;改&#xff09;2.3 最优装载2.4 多机调度2.5 最优服务次序问题2.6 多处最优服务次序问题 3.动态规划选1-2题3.1最长公共子序列3.2最大子段和3.3 …

这个原因,让你自动化测试年薪30W+也不能躺平

其实这个问题&#xff0c;我们遇到到很多次&#xff1a; “自动化就可以满足我现在的公司需求&#xff0c;为什么不躺平&#xff0c;还要继续学测开&#xff1f;” 每次遇到这个问题后&#xff0c;立马就会有一个“涨薪效应”&#xff1a;收到粉丝们的高薪offer ​ 其实&#x…

星河案例ㅣ中国电信 X 冲量在线:基于智算中心的隐私计算应用实践

▏摘要 中国电信是中国三大运营商之一&#xff0c;为响应国家“东数西算”工程的全新数据中心形态&#xff0c;中国电信引入隐私计算平台&#xff0c;对内实现数据确权跟踪、对外实现数据共享交易&#xff0c;盘活中国电信分布在全国不同区域的数据资源和算力资源&#xff0c;…

软件测试行业对新人友好吗?为什么?

随着信息技术的迅猛发展&#xff0c;软件测试行业成为了一个备受青睐的职业领域&#xff0c;但是对于没有经验和专业背景的新人来说&#xff0c;进入这个行业是否容易&#xff0c;是否有足够的发展空间呢&#xff1f;接下来从多个方面分析和介绍。 如果你想学习软件测试&#…

踩坑:MapperScannerConfigurer导致@PropertySource中@Value无效

问题描述 问题描述&#xff1a;在配置类中使用PropertySource引入了.properties文件&#xff0c;但是使用Value注入时&#xff0c;结果竟然null。 郁闷了一上午。 在Spring与MyBatis整合时&#xff0c;需要注入MyBatis的自动扫描配置类MapperScannerConfigurer的Bean 我用的是…

[Orillusion]-使用 -windwos-4行命令

前两天看了webgpu的开源库Orillusion | 专业 WebGPU 引擎 Orillusion感觉很不错的样子&#xff0c;准备试一下。因为都是做OpenGL和windows桌面端。 web有点小陌生&#xff0c;记录一下。 准备&#xff1a; Google Chrome Canary 最新版&#xff0c;老版本有问题 nodejs 版…

ChatGPT商业源码授权

ChatGPT商业源码是由OpenAI公司开发并拥有版权的&#xff0c;未经授权擅自使用、复制、分发或修改可能涉及侵犯知识产权等法律问题&#xff0c;并可能会受到相应的法律惩罚。 如果您需要使用ChatGPT商业版&#xff0c;可以考虑通过OpenAI官方渠道进行授权购买。此外&#x…

ENSP网络综合实验(WALN+隧道+NAT)

实验拓扑 https://wwa.lanzoub.com/ivTyH0w8vz6d 设备接入、汇聚交换机&#xff08;S3700、S5700&#xff09;、路由器&#xff08;AR3200&#xff09;为例。 接入层&#xff1a;用户角色包括员工&#xff08;接入方式包括有线和无线&#xff09;和访客&#xff08;仅能通过无…

深入了解ribbon源码

ribbon源码解析 自动装配 依赖 <!--添加ribbon的依赖--> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency>spring-cloud-starter-netflix-…

skywalking agent使用kafka数据传输

安装Zookeeper 下载相应版本的zookeeper 解压文件 tar -vxzf apache-zookeeper-3.8.0-bin.tar.gz进入conf目录下&#xff0c;复制zoo_sample.cfg文件&#xff0c;这个是官方提供的配置样例&#xff0c;我们修改复制的文件名称未zoo.cfg。 进入bin目录&#xff0c;启动zookeep…

医院三级质控信息化支撑工具之一

建立组织,完善管理制度 新华社北京3月23日电 近日&#xff0c;中共中央办公厅、国务院办公厅印发了《关于进一步完善医疗卫生服务体系的意见》&#xff0c;并发出通知&#xff0c;要求各地区各部门结合实际认真贯彻落实。(原文地址:中共中央办公厅 国务院办公厅印发《关于进一步…