cocos-creator学习笔记1(旋转,位置移动,键盘监控移动基础)
大一结束的寒假,我无意中发现了一款触碰科技公司开发的开源游戏引擎——cocos-creator,对于开发游戏本来就热爱的我怎么能错失这个机会的,对的起开源就要好好学习(手动滑稽)。由于网课占用时间比例高,而昨天是周六,顺带学习了一波cocos-creator里面相对基础的API及其他知识(当然语言是JavaScript)。
废话不多说,第一次学习,写个笔记纪念一下:(介绍cocos-creator软件组成我就不写了,官方cocos里面说的应该够清楚了)
1.this的理解: 在一个cocos-creator里面的JavaScript脚本里面,this基本上是无处不在的,我说说我个人的看法吧,我也是第一次学(别说我误导子弟,o(╥﹏╥)o)。this我一般把这个关键词看做指代这个你正在编辑的脚本,你完全可以把这个this当做当前脚本的全局定义关键字,举个例子,比如还有什么this.maxnum=0,可能意思就是这个脚本 (this) 里面一个类似于全局的变量maxnum赋值为0.如下
在这两个脚本里面,这样子定义,maxnum只能在脚本一使用,在脚本二使用就会出现未声明的报错提示,对于脚本二也是一样的意思。而且在输出时不能仅仅写“输出maxnum”,要写“this.maxnum”,JavaScript是一门弱语言,你可以把它当小学生看。
2.在cocos-creator里面的输出语法是: cc.log()
cc.Class({ //cocos类库extends: cc.Component,properties: {maxnum:0,},onLoad () {},update (dt) { //每一次更新是1/60s,也就是dt=0.01667s左右更新一次cc.log(this.maxnum);},
});
2.图片旋转
我下面实现是按图片的中心点进行旋转的,因为一般你创建一个精灵后,其默认位置的锚点都是(0.5,0.5),也就是图片中心处。
cc.Class({ //cocos类库extends: cc.Component,properties: {test:{type:cc.Node, //创建一个名叫test的节点。default:null,},w:120, //设置角速度为120度/秒},onLoad () {},update (dt) { //每一次更新是1/60s,也就是dt=0.01667s左右更新一次this.test.angle += this.w * dt; //angle就是test节点上的一个属性(角度)// 乘于dt的意思是每次更新都要按照角速度进行叠加},
});
3.位置移动
2d上就是精灵在二维坐标平面的移动。
cc.Class({ //cocos类库extends: cc.Component,properties: {test:{type:cc.Node, //创建一个名叫test的节点。default:null,},//w:120, //设置角速度为120度/秒},onLoad () {},update (dt) { //每一次更新是1/60s,也就是dt=0.01667s左右更新一次//this.test.angle += this.w * dt; //angle就是test节点上的一个属性(角度)// 乘于dt的意思是没次更新都要按照角速度进行叠加this.test.x += 5*dt;this.test.y += 5*dt; //加多少完全取决于自己,主要注意一下这个x,y就是图片的//坐标,(注意,这个坐标是相对于test这个节点父节点的坐标,而不是绝对坐标。)},
});
4.接受键盘控制
在cocos-creator里面,cocos库专门有一些API用于处理接受用户的键盘输入而达到控制所谓游戏英雄的移动。
1.首先开启键盘的监控功能,通过我们用的两类操作来实现,一个是我们按下键盘按键时做出的反应,还有一个是我们手指离开你所按的按键的反应,分别是KEY_DOWN和KEY_UP
上述过程实现的大致流程:首先调用cocos类库里面的systemEvent,并将其开关打开(也就是后面的on)现在开始你监控的类型(调用cocos类库里面的SystemEvent,再调用其内的EventType,也就是查找监控事件的类型——KEY_DOWN或者KEY_UP)括号内第一个逗号后面是一个自定义的函数,我这里将函数名分别定义为OnKeyDown和OnKeyUp,通过this关键词来索引调用这个函数(下面会写这两个函数的内容),最后一个this是对此脚本实现键盘监控。
2.我们来看第二类,与之相反,你既然可以打开键盘监控,那我也就可以关闭键盘监控
定义在onDestroy里面,上面on是打开监控,这个off是关闭监控。
3.定义一系列的移动判断变量,我将他们定义在onLoad里面,当然start里面也可以
默认移动变量是false,也就是说是关闭的。
5.接下来实现键盘移动
首先是当你的手将一个方向键按沉了,说明调用KEY_DOWN那行里面的OnKeyDown函数
event就是指代你这次监控的事件
相应的,如果你的手离开了键盘,此时的移动变量开关应该又变成false;
6.实现后在updat函数里面通过四个移动变量哪个为true来判断英雄移动的方向
贴上完整代码(其他代码可以不用理会)
cc.Class({extends: cc.Component,properties: {player:{type:cc.Node,default:null,},Bullent:{type:cc.Prefab,default:null,},ememy:{type:cc.Prefab,default:null,},},onLoad () {this.isleft=false;this.isright=false;this.isup=false;this.isdown=false;this.kaihuo=false;cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN,this.OnKeyDown,this);cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP,this.OnKeyUp,this);this.jiage=0;this.jg=0;this.num=0;},onDestroy(){cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN,this.OnKeyDown,this);cc.systemEvent.off(cc.SystemEvent.EventType.KEY_UP,this.OnKeyUp,this);},CreateBullet:function(){var bull = cc.instantiate(this.Bullent);this.node.addChild(bull);bull.setPosition(this.player.x,this.player.y - this.player.height/2+15);bull.getComponent('bullet').game = this;},CreateEmemy:function(){var EM = cc.instantiate( this.ememy );this.node.addChild(EM);EM.setPosition((Math.random()-0.5)*2*460 , -325-EM.height/2);},OnKeyDown(event){switch(event.keyCode){case cc.macro.KEY.a:this.isleft = true;cc.log("anxia");break;case cc.macro.KEY.d:this.isright = true;break;case cc.macro.KEY.s:this.isdown = true;break;case cc.macro.KEY.w:this.isup = true;break;case cc.macro.KEY.space:this.kaihuo = true;cc.log("kaihuo");break;}},OnKeyUp(event){switch(event.keyCode){case cc.macro.KEY.a:this.isleft = false;break;case cc.macro.KEY.d:this.isright = false;break;case cc.macro.KEY.s:this.isdown = false;break;case cc.macro.KEY.w:this.isup = false;break;case cc.macro.KEY.space:this.kaihuo = false;break;}},update (dt) {cc.log(this.player.x);if(this.isleft){this.player.x -= 4;}else if(this.isright){this.player.x += 4;}else if(this.isdown){this.player.y -= 4;}else if(this.isup){this.player.y += 4;}this.jiage++;this.jg++;/*if(this.jiage>20){this.CreateBullet();this.jiage=0;}if(this.num<=6&&this.jg==240){this.CreateEmemy();this.num++;this.jg=0;}*/},
});
第一次学习cocos-creator,也才刚刚进入大学半年,欢迎大家一起讨论学习!
cocos-creator学习笔记1(旋转,位置移动,键盘监控移动基础)相关推荐
- Cocos creator 学习笔记(2)
7.ts 跳转场景 director.loadScene("game"); 8 ts--在ts文件声明变量时,前面加上注解 @property,此变量量就可以在cocos ...
- cocos creator学习(七)音乐
目录 背景音乐 使用AudioSource组件 ①添加组件 ②脚本控制 直接脚本控制 ①声明 ②播放背景音乐(playMusic) 音效 直接脚本控制 ①声明 ②播放 ③停止 注意 背景音乐 使用Au ...
- Task02:学习笔记文本预处理;语言模型;循环神经网络基础
Task02:学习笔记文本预处理:语言模型:循环神经网络基础 文本预处理 文本是一类序列数据,一篇文章可以看作是字符或单词的序列,本节将介绍文本数据的常见预处理步骤,预处理通常包括四个步骤: 读入文本 ...
- C++学习笔记-第4单元-对象和类(基础)
C++学习笔记 文章目录 C++学习笔记 第4单元 对象和类(基础) 单元导读 4.1 用类创建对象 4.1.1 对象和类 4.1.2 创建对象并访问 4.2 对象拷贝.分离声明与实现 4.2.1 对 ...
- MySQL学习笔记——尚硅谷李玉婷经典版MySQL基础笔记(一)
MySQL学习笔记--尚硅谷李玉婷经典版MySQL基础笔记(一) MySQL学习笔记目录 MySQL学习笔记--尚硅谷李玉婷经典版MySQL基础笔记(一) 一.基础知识 1.MySQL的语法规范 2. ...
- 大数据Hadoop教程-学习笔记01【大数据导论与Linux基础】
视频教程:哔哩哔哩网站:黑马大数据Hadoop入门视频教程,总时长:14:22:04 教程资源:https://pan.baidu.com/s/1WYgyI3KgbzKzFD639lA-_g,提取码: ...
- Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础
Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...
- Java分布式应用学习笔记08JMX规范与常用的监控场景
转自:Java分布式应用学习笔记08JMX规范与常用的监控场景 1. JMX规范 JMX是"Java管理扩展的"的缩写,它和其他JavaEE类似也是曾经的Sun提出的一种规范(规 ...
- cocos creator 学习随笔 day03 节点和组件属性
目录 节点本身属性 控件属性 场景 空节点 3D对象 2D对象 UI组件 光线 特效 摄像机 地形 节点本身属性 第一栏为节点名,可修改,前面得勾,是表示是否使用该节点,去掉代表隐藏该节点,但是该节点 ...
最新文章
- 面向机器学习的自然语言标注
- EM算法理解的九层境界
- 贴一段数组动态扩容的代码
- numpy ndarray.tostring()(在数组中构造包含原始数据字节的Python字节)(tobytes()函数的兼容性别名)
- 基于Native Client的编程框架
- Entity Framework 4.1 (强转)
- linux日志auditd,linux 审计工具auditd日志audit.log时间戳转换查看
- 图神经网络(二)--GNNs
- c++ socket线程池_Netty(3)——Reactor线程模型
- Java基础语法总结
- 【软件测试】应用白盒测试实例
- 提升生产力,7 款好用的原型图工具推荐给你
- cpu 调频 温度 ondemand
- 简单的魔方复原方法, 魔方还原公式,图解
- 安卓投屏传输手机声音到电脑最简单的方式
- 子平真诠释疑笔记(五)
- 理工附中2021年高考成绩查询,人大附中、理工附中、101中学、十二中等5区10校高考成绩汇总!...
- 复旦大学2019计算机考研,2019年复旦961软件工程专硕考研初试363+复试经验分享
- Ubuntu18.04安装后未发现Wi-Fi适配器解决办法
- GDKOI-PJ-2021 Day2总结
热门文章
- Excel设置选项按钮
- python截取视频_python+ffmpeg截取视频段
- 欢迎IntelliJ IDEA:Maven projects need to be imported: Import Changes Enable Auto-Import
- [QTV] 实例演示 — 基于FPGA的AWS F1实例
- 网站加入滚动字幕或公告说明
- Pandas 中 SettingwithCopyWarning 的原理和解决方案
- 记一次微信点赞小网站的事故
- Addition Chains
- Linux飞鸽传书源码,图解Ubuntu下编译安装飞鸽传书IPMsg步骤
- 电脑如何剪辑视频?自学视频剪辑的朋友看过来