大一结束的寒假,我无意中发现了一款触碰科技公司开发的开源游戏引擎——cocos-creator,对于开发游戏本来就热爱的我怎么能错失这个机会的,对的起开源就要好好学习(手动滑稽)。由于网课占用时间比例高,而昨天是周六,顺带学习了一波cocos-creator里面相对基础的API及其他知识(当然语言是JavaScript)。 2.图片旋转 3.位置移动 4.接受键盘控制 1.首先开启键盘的监控功能,通过我们用的两类操作来实现,一个是我们按下键盘按键时做出的反应,还有一个是我们手指离开你所按的按键的反应,分别是KEY_DOWN和KEY_UP 2.我们来看第二类,与之相反,你既然可以打开键盘监控,那我也就可以关闭键盘监控 3.定义一系列的移动判断变量,我将他们定义在onLoad里面,当然start里面也可以 第一次学习cocos-creator,也才刚刚进入大学半年,欢迎大家一起讨论学习!
废话不多说,第一次学习,写个笔记纪念一下:(介绍cocos-creator软件组成我就不写了,官方cocos里面说的应该够清楚了)
1.this的理解: 在一个cocos-creator里面的JavaScript脚本里面,this基本上是无处不在的,我说说我个人的看法吧,我也是第一次学(别说我误导子弟,o(╥﹏╥)o)。this我一般把这个关键词看做指代这个你正在编辑的脚本,举个例子,比如还有什么this.maxnum=0,可能意思就是这个脚本 (this) 里面一个类似于全局的变量maxnum赋值为0.如下
在这两个脚本里面,这样子定义,maxnum只能在脚本一使用,在脚本二使用就会出现未声明的报错提示,对于脚本二也是一样的意思。而且在输出时不能仅仅写“输出maxnum”,要写“this.maxnum”,JavaScript是一门弱语言,你可以把它当小学生看,你要输出这个maxnum,相当于你还要喊它一下“嘿,脚本1,输出你里面的maxnum”,所以输出时就带了前缀this.(手动滑稽)。
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); }, });
我下面实现是按图片的中心点进行旋转的,因为一般你创建一个精灵后,其默认位置的锚点都是(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的意思是每次更新都要按照角速度进行叠加 }, });
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这个节点父节点的坐标,而不是绝对坐标。) }, });
在cocos-creator里面,cocos库专门有一些API用于处理接受用户的键盘输入而达到控制所谓游戏英雄的移动。
上述过程实现的大致流程:首先调用cocos类库里面的systemEvent,并将其开关打开(也就是后面的on)现在开始你监控的类型(调用cocos类库里面的SystemEvent,再调用其内的EventType,也就是查找监控事件的类型——KEY_DOWN或者KEY_UP)括号内第一个逗号后面是一个自定义的函数,我这里将函数名分别定义为OnKeyDown和OnKeyUp,通过this关键词来索引调用这个函数(下面会写这两个函数的内容),最后一个this是对此脚本实现键盘监控。
定义在onDestroy里面,上面on是打开监控,这个off是关闭监控。默认移动变量是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; }*/ }, });
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算