现在小猫还只是原地跳跃,下面给主角添加键盘输入

    用A和D控制它的跳跃方向

    setJumpAction()方法的下面添加键盘事件响应函数,代码如下

    1. onKeyDown (event) {
    2. // 当键被按下时设一个标示
    3. switch(event.keyCode) {
    4. case cc.macro.KEY.a:
    5. this.accLeft = true;
    6. break;
    7. case cc.macro.KEY.d:
    8. this.accRight = true;
    9. break;
    10. }
    11. },
    12. onKeyUp (event) {
    13. // 当键被释放时设一个标示
    14. switch(event.keyCode) {
    15. case cc.macro.KEY.a:
    16. this.accLeft = false;
    17. break;
    18. case cc.macro.KEY.d:
    19. this.accRight = false;
    20. break;
    21. }
    22. },

    然后修改onLoad()方法

    在其中加入向左和向右加速的开关

    以及主角当前在水平方向的速度

    最后再调用cc.systemEvent

    在场景加载后开始监听键盘输入,代码如下

    1. onLoad: function () {
    2. // 初始化跳跃动作
    3. this.jumpAction = this.setJumpAction();
    4. this.node.runAction(this.jumpAction);
    5. // 加速度方向开关
    6. this.accLeft = false;
    7. this.accRight = false;
    8. // 主角当前水平方向速度
    9. this.xSpeed = 0;
    10. // 初始化键盘输入监听
    11. cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
    12. cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
    13. },
    14. onDestroy () {
    15. // 取消键盘输入监听
    16. cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
    17. cc.systemEvent.off(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
    18. },

    最后修改update()方法的内容,添加

    • 加速度
    • 速度
    • 主角当前位置的设置,代码如下
      1. update: function (dt) {
      2. // 根据当前加速度方向每帧的更新速度
      3. if (this.accLeft) {
      4. this.xSpeed -= this.accel * dt;
      5. } else if (this.accRight) {
      6. this.xSpeed += this.accel * dt;
      7. }
      8. // 限制主角的速度不能超过最大值
      9. if ( Math.abs(this.xSpeed) > this.maxMoveSpeed ) {
      10. this.xSpeed = this.maxMoveSpeed * this.xSpeed / Math.abs(this.xSpeed);
      11. }
      12. // 根据当前速度更新主角的位置
      13. this.node.x += this.xSpeed * dt;
      14. },

    update在场景加载后就会每帧调用一次

    一般把需要经常计算或及时更新的逻辑内容放在这里

    在游戏中,根据键盘输入获得加速度方向后,就需要每帧在update中计算主角的速度和位置