zoukankan      html  css  js  c++  java
  • HTML5 2D平台游戏开发#5攻击

      目前为止,角色除了基本的移动外还什么都不能做,于是我打算先实现角色的攻击动画。角色的普通攻击一共可以分为三个阶段:

    一段斩
    二段斩
    三段斩
    移动攻击
    跳跃攻击
    触发方式为角色站立时按下J(攻击)键,角色开始攻击,在此期间连续快速敲打J键,可继续触发后续攻击。最终效果如下:
    (AD移动,K跳跃,J攻击,U冲刺)
     
     

    之前已经使用了状态机来控制角色的行为,现在再用它来分析角色攻击阶段所发生的事情:

    这里把攻击分为三种状态,目的是为了方便控制和在状态间转化,以下是updateIdle中的部分代码,用于站立过渡到攻击状态:

    updateIdle:function() {
        //省略部分代码
        if (key[74]) { //攻击
            if (!this.attacking && this.keyPressCounter++===1) {
                this.attacking = true;
                this.state = STATE.ATTACKING;
    
                this.play(); //播放攻击动画
            }
        } else {
            this.attacking = false;
            this.keyPressCounter = 0;
        }
    }

    然后由攻击状态可以过渡到二段攻击状态,也可以不进行任何操作恢复到站立状态:

    updateAttacking:function() {
        let walked = false;
        //若此阶段没有按下攻击键,则将连发锁重置
        if (!key[74]) this.keyPressCounter = 0; 
    
        if (key[85]) this.dashing = true;
    
        //在攻击过程中如果按下移动键,则在动画第8帧时就能移动而不用等到动画结束
        if (key[65] || key[68]) { 
            walked = true;
            if (this.getCurrentFrameIndex() >= 8) {
                this.state = STATE.WALKING;
                this.play();
            }
        }
    
        //仅动画帧<=7时按下攻击键可出现二段斩
        if (this.getCurrentFrameIndex() <= 7) { 
            //如果没有连发锁,一直按住攻击键就能触发二段斩,不符合游戏逻辑
            if (key[74] && this.keyPressCounter++===1) { 
                this.comboCounter = 2;
            }
        } 
        //动画开始到结束期间没有执行任何操作则执行此段分支恢复到Idle状态
        else if (this.isAnimationEnd()) { 
            this.state = STATE.IDLE;
            this.play();
        }
    
        if (this.comboCounter === 2) { //执行二段斩
            if (this.getCurrentFrameIndex() <= 7) {
                this.state = STATE.ATTACKING_2ND;
                this.play();
            }
        }
    }

    根据这种思路,可以很快完成updateAttacking2ndupdateAttacking3nd方法。

    除此之外,角色还有很多种攻击方式,有时间的话会继续更新。

    更新日志

      2017/4/09  更新角色跳跃

      2017/4/21  更新角色冲刺

      2017/5/01  更新角色状态机

      2017/5/16  更新角色攻击动画

      2017/5/22  更新角色移动攻击动画

      2017/5/24  更新角色跳跃攻击动画

  • 相关阅读:
    Software Solutions CACHE COHERENCE AND THE MESI PROTOCOL
    CACHE COHERENCE AND THE MESI PROTOCOL
    Multiprocessor Operating System Design Considerations SYMMETRIC MULTIPROCESSORS
    Organization SYMMETRIC MULTIPROCESSORS
    PARALLEL PROCESSING
    1分钟内发送差评邮件
    Secure Digital
    SYMMETRIC MULTIPROCESSORS
    A Taxonomy of Parallel Processor Architectures
    parallelism
  • 原文地址:https://www.cnblogs.com/undefined000/p/make_character_attack_in_2d_platform_game.html
Copyright © 2011-2022 走看看