Cocos---大作业:简单H5小游戏
Cocos大作业:传统美食分分类
知识点清单:
场景切换,监听时间,碰撞组件及回调,拖动角色移动,分数记录,随机数和定时器,背景音乐控制,资源池控制,预制体,进度条...
源码+q:1431448323
效果图展示


游戏玩法如图所示
制作流程
场景切换
在按钮事件上
cc.director.loadScene('Play');
拖动物体
挂载美食上即可
start () {
this.node.on('touchmove',this.func1,this);
}
func1(t){
let p = this.node.parent.convertToNodeSpaceAR(t.getLocation());
this.node.position=p;
}
音乐管理
先构建如下
开关下面是两张图片
挂载脚本在‘开关’上

flag是用于检测开关的状态
@property(cc.Node)
kaiguan: cc.Node = null;
@property(cc.AudioClip)
bgAudio:cc.AudioClip=null;
audioID:number=0;
flag =false ;
protected onLoad(): void {
this.audioID=cc.audioEngine.play(this.bgAudio,true,0.5);
}
click(){
this.flag=!this.flag;
if(this.flag){
cc.audioEngine.pause(this.audioID);
this.kaiguan.getChildByName("关闭").active=true;
}
else {
cc.audioEngine.resume(this.audioID);
this.kaiguan.getChildByName("关闭").active=false;
}
}
碰撞检测
必须先开启检测
需要提前输入目标名字
@property(String)
TargetName:string="1111";
// @property(cc.AudioClip)
// rightAudio:cc.AudioClip=null;
// dfs:string="dfasdf";
protected start(): void {
let manager = cc.director.getCollisionManager();
// 开启碰撞检测系统
manager.enabled = true;
}
onCollisionStay(other,self){
let b = other.world.aabb;
let a = self.world.aabb;//b中是否包含a
if(b.containsRect(a)&&other.node.name == this.TargetName){
console.log('ok');
MAIN.fenshu++;
// this.playRight();
this.node.destroy();
}
}
资源池
预制体
cc.Prefab 资源池:cc.NodePool
MAIN.pool2.put(newlibao);
bao=MAIN.pool2.get();
cc.NodePool API: 放入put(),获得get()
随机数:
//介于1-3秒之间的随机数,发礼包的随机事件
// Math.floor(Math.random()*(max-min+1)+min);
if(this.rongqi.childrenCount>8)return ;
监听时间
// 每0.5秒执行this.Food()函数
this.schedule(this.Food,0.5);
//10秒后执行over函数
this.scheduleOnce(this.over,11);
随机获取食物显示在盘子中
Food(){
//介于1-3秒之间的随机数,发礼包的随机事件
// Math.floor(Math.random()*(max-min+1)+min);
if(this.rongqi.childrenCount>8)return ;
let suiji = Math.floor(Math.random()*(4-0+1)+0);
let bao = null;
if(suiji<1&&MAIN.pool1.size()>0)bao=MAIN.pool1.get();
else if(suiji<2&&MAIN.pool2.size()>0)bao=MAIN.pool2.get();
else if(suiji<3&&MAIN.pool3.size()>0)bao=MAIN.pool3.get();
else if(suiji<4&&MAIN.pool4.size()>0)bao=MAIN.pool4.get();
else return ;
if(MAIN.pool4.size()==0){
bao = cc.instantiate(this.yuebing);
}
//x坐标在-180到180之间随机
let randomX = Math.floor(Math.random()*(110+110+1)-110);
bao.position = cc.v3(randomX,-160,0);
this.rongqi.addChild(bao);
}
结束
over(){
this.replay.active = true;
this.rongqi.destroy();
this.unscheduleAllCallbacks(); //取消所有定时器
}
更改分数
update(t){
if(this.txt.string == MAIN.fenshu.toString())
return ;
else {
this.txt.string = MAIN.fenshu.toString();
cc.audioEngine.play( this.rightAudio,false,1);
}
}
Cocos---大作业:简单H5小游戏的更多相关文章
- java实现简单窗体小游戏----球球大作战
java实现简单窗体小游戏----球球大作战需求分析1.分析小球的属性: 坐标.大小.颜色.方向.速度 2.抽象类:Ball 设计类:BallMain—创建窗体 BallJPanel—画小 ...
- Egret白鹭H5小游戏开发入门(一)
前言: 好久没更新博客了,以前很多都不会,所以常常写博客总结,倒是现在有点点经验了就懒了.在过去的几个月里,在canvas游戏框架方面,撸过了CreateJS,玩得了Egret,又学过PIXI.js. ...
- 开发H5小游戏
Egret白鹭H5小游戏开发入门(一) 前言: 好久没更新博客了,以前很多都不会,所以常常写博客总结,倒是现在有点点经验了就懒了.在过去的几个月里,在canvas游戏框架方面,撸过了CreateJ ...
- “倔驴”一个h5小游戏的实现和思考(码易直播)——总结与整理
3月23日晚上8点半(中国队火拼韩国的时候),做了一期直播分享.15年做的一个小游戏,把核心代码拿出来,现场讲写了一遍,结果后面翻车了,写错了两个地方,导致运行效果有点问题,直播边说话边写代码还真不一 ...
- 从零开始开发一款H5小游戏(三) 攻守阵营,赋予粒子新的生命
本系列文章对应游戏代码已开源 Sinuous game. 每个游戏都会包含场景和角色.要实现一个游戏角色,就要清楚角色在场景中的位置,以及它的运动规律,并能通过数学表达式表现出来. 场景坐标 canv ...
- Egret白鹭H5小游戏开发入门(二)
前言: 昨天的文章中简单的介绍了Egret白鹭引擎从安装到基本的使用配置等问题,今天着重介绍H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明,开始布局等等. 整体概况: 根据上一篇 ...
- 青瓷qici - H5小游戏 抽奖机 “one-arm bandit”
写在前面 本文实现一个简单的抽奖效果,使用青瓷qici引擎,其中应用了Tween动画,粒子系统,遮罩,UI界面布局,项目设置,发布等功能呢. 目前开发采用1.0.7版本,后续如果界面有所变化请参考这个 ...
- 原生JS实现的h5小游戏-植物大战僵尸
代码地址如下:http://www.demodashi.com/demo/12755.html 项目介绍 本项目是利用原生js实现的h5小游戏-植物大战僵尸,主要结合了一下自己对于h5小游戏的理解,结 ...
- 从零开始开发一款H5小游戏(二) 创造游戏世界,启动发条
本系列文章对应游戏代码已开源 Sinuous game 上一节介绍了canvas的基础用法,了解了游戏开发所要用到的API.这篇文章开始,我将介绍怎么运用这些API来完成各种各样的游戏效果.这个过程更 ...
随机推荐
- HTML5中新增Javascript特性
存储 localStorage 存储: window.localStorage.setItem('key', 'value'); 取值: window.localStorage.getItem('ke ...
- canvas离屏、旋转效果实践——旋转的雪花
效果展示理论基础--"常见的canvas优化--模糊问题.旋转效果" 用离屏canvas画基础部分 1.封装画线函数 function drawLine(ctx,x1,y1,x2, ...
- 关于个人开源项目(vue app)的一些总结
关于个人开源项目(vue app)的一些总结 项目地址 https://github.com/BYChoo/record 项目简介 此项目名叫:Record.是以Vue全家桶(vue,vue-rout ...
- CSRF浅析
概念 CSRF,Cross Site Request Forgery,跨站请求伪造. 为什么跨站的请求需要伪造? 因为浏览器实现了同源策略,这里可以将站和源视为同一个概念. 同源策略 The same ...
- 【每日日报】第三十八天---java与时间相关
1 今天看了网上的课程 学习了java的关于时间的代码 获取时间 import java.util.Date; public class DateDemo { public static void m ...
- window.location.href用法与a标签的比较
1.在使用这两种方法进行页面的跳转时,这两种方法都能够有效的实现该功能 但是其原理不尽相同 第一:window.location.href()方法必须书写在js中 <html> <h ...
- python——如何import包目录
文件位置 文件所在位置包括 , 源根目录的位置 该文件位置(也可以叫相对位置). 导入包的时候会从文件位置进行查找,并导入. 导入包 1. 什么是包? pycharm中包的图片 其中文件夹上有个圆点的 ...
- win2008升级mysql5.7.20步骤总结
环境: 系统:红帽5.5 旧版mysql:5.5 新版mysql:5.7.20 前期准备: 1.备份旧版mysql数据,不知道data目录在哪可以在my.ini配置文件里面查看datadir指定的目录 ...
- JavaWeb入门day10-JSP
JSP 什么是JSP Java Server Pages:Java服务器端页面,也和Servlet一样,用于动态Web技术 最大特点: 写JSP就像在写HTML 区别 HTML只给用户提供静态数据 J ...
- 2021年3月-第02阶段-前端基础-HTML+CSS阶段-Day03
HTML5 第三天 一. 认识 3D 转换 3D 的特点 近大远小 物体和面遮挡不可见 三维坐标系 x 轴:水平向右 -- 注意:x 轴右边是正值,左边是负值 y 轴:垂直向下 -- 注意:y 轴下面 ...
