美文网首页小游戏
Cocos Creator之角色组合按键技能

Cocos Creator之角色组合按键技能

作者: 喜欢桃子的阿狸 | 来源:发表于2019-04-05 11:09 被阅读271次
    想必大家都玩过街机游戏,例如红白机的街霸,拳皇,里面角色的技能是通过组合按键触发的,废话不多说,上测试图。 rpg.gif

    代码

    const {ccclass, property} = cc._decorator;
    
    @ccclass
    export default class player extends cc.Component {
    
        //自定义方向键和攻击键
        public KEY_UP:number = 0;
        public KEY_DOWN:number = 1;
        public KEY_LEFT:number = 2;
        public KEY_RIGHT:number = 3;
        public KEY_ATTACK:number = 4;
    
        //技能列表中技能的数量
        public SKILLLIST_SIZE:number = 1;
        //每组组合技能的按键数量
        public SKILL_KEYCOUNT = 3;
        //技能列表->二维数组
        private SkillList:Array<any> = [[this.KEY_DOWN,this.KEY_UP,this.KEY_ATTACK]];
        //记录当前按下的按键的值
        private currentKeyCode:number = 0;
        //玩家输入的按键组合
        private inputKeys:Array<any> = [];
        //是否开始计时
        private startFrame:boolean = false;
        //限制输入组合按键的时间(计时器)
        private timer:number = 5;
        //记录开启监听到现在的时间 
        private time:number = 0;
        //是否触发技能成功
        private isSuccess:boolean = false;
    
    
        onLoad () {
            cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN,this.OnKeyDown,this);
        }
    
        start () {
    
        }
    
        update (dt) {
            
            if (this.startFrame) {
                //计时器++
                this.time += dt;
                if (this.time >= this.timer) {
                
                    //计时器超时
                    if (!this.isSuccess) {
                        this.Reset();
                    }
                }
            }
        }
    
        //按下按键
        OnKeyDown(event){
            console.log("按下的按键的keycode",event.keyCode);
    
            switch (event.keyCode) {
                case cc.macro.KEY.w:
                    this.currentKeyCode = this.KEY_UP;
                    break;
                case cc.macro.KEY.s:
                    this.currentKeyCode = this.KEY_DOWN;
                    break;
                case cc.macro.KEY.a:
                    this.currentKeyCode = this.KEY_LEFT;
                    break;
                case cc.macro.KEY.d:
                    this.currentKeyCode = this.KEY_RIGHT;
                    break;
                case cc.macro.KEY.j:
                    this.currentKeyCode = this.KEY_ATTACK;
                    break;
            }
    
            if (this.isSuccess) {
                console.log("Reset");
                this.isSuccess = false;
                this.Reset();
            }
    
    
            if (!this.startFrame) {
                //启动计时器
                this.startFrame = true;
            }
    
            //将按键值添加到输入按键列表
            this.inputKeys.push(this.currentKeyCode);
            
    
            //遍历
            let size = this.inputKeys.length;
            if (size<this.SKILL_KEYCOUNT) {   //按键数不够
                
                
            }else{  //如果玩家按键数不小于设定键,取后5位
                console.log("未移除前的元素",this.inputKeys);
                for (let k = 0; k < size - this.SKILL_KEYCOUNT; k++) {
                    this.inputKeys.splice(0,1);
                }
                console.log("移除后的元素",this.inputKeys);
                for (let i = 0; i < this.SKILLLIST_SIZE; i++) {
                    let successCount = 0;
                    for (let j = 0; j < this.SKILL_KEYCOUNT; j++) {
                        let temp = this.inputKeys[j];
                        if (temp == this.SkillList[i][j]) {
                            successCount ++;
                        }
    
                        if (successCount == this.SKILL_KEYCOUNT) {
                            console.log("isSuccess");
                            this.isSuccess = true;
                            //播放组合技能动画
    
                            break;
                        }
                    }
                }
            }
            
        }
    
        //重置
        Reset(){
            this.time = 0;
            this.startFrame = false;
            this.inputKeys = [];
        }
    }
    
    

    相关文章

      网友评论

        本文标题:Cocos Creator之角色组合按键技能

        本文链接:https://www.haomeiwen.com/subject/ewyhiqtx.html