现在小猫还只是原地跳跃,下面给主角添加键盘输入
用A和D控制它的跳跃方向
在setJumpAction()方法的下面添加键盘事件响应函数,代码如下
onKeyDown (event) {// 当键被按下时设一个标示switch(event.keyCode) {case cc.macro.KEY.a:this.accLeft = true;break;case cc.macro.KEY.d:this.accRight = true;break;}},onKeyUp (event) {// 当键被释放时设一个标示switch(event.keyCode) {case cc.macro.KEY.a:this.accLeft = false;break;case cc.macro.KEY.d:this.accRight = false;break;}},
然后修改onLoad()方法
在其中加入向左和向右加速的开关
以及主角当前在水平方向的速度
最后再调用cc.systemEvent
在场景加载后开始监听键盘输入,代码如下
onLoad: function () {// 初始化跳跃动作this.jumpAction = this.setJumpAction();this.node.runAction(this.jumpAction);// 加速度方向开关this.accLeft = false;this.accRight = false;// 主角当前水平方向速度this.xSpeed = 0;// 初始化键盘输入监听cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);},onDestroy () {// 取消键盘输入监听cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);cc.systemEvent.off(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);},
最后修改update()方法的内容,添加
- 加速度
- 速度
- 主角当前位置的设置,代码如下
update: function (dt) {// 根据当前加速度方向每帧的更新速度if (this.accLeft) {this.xSpeed -= this.accel * dt;} else if (this.accRight) {this.xSpeed += this.accel * dt;}// 限制主角的速度不能超过最大值if ( Math.abs(this.xSpeed) > this.maxMoveSpeed ) {this.xSpeed = this.maxMoveSpeed * this.xSpeed / Math.abs(this.xSpeed);}// 根据当前速度更新主角的位置this.node.x += this.xSpeed * dt;},
update在场景加载后就会每帧调用一次
一般把需要经常计算或及时更新的逻辑内容放在这里
在游戏中,根据键盘输入获得加速度方向后,就需要每帧在update中计算主角的速度和位置
