战斗场景的制作方法

来源:互联网 发布:淘宝卖家升级45元 编辑:程序博客网 时间:2024/04/26 17:52

通过预制键加载的动作属性,通过属性跑到战斗场景里

 cc.find("Canvas").runAction(cc.sequence(cc.fadeOut(1,0),cc.callFunc(function(){
                   cc.director.loadScene('WAN');
               })))  


创建一个WAN脚本,执行切换战斗场景,达到我们需要的目的



onLoad: function () {
        cc.find("Canvas").setOpacity(0);
        cc.find("Canvas").runAction(cc.fadeIn(1,0))
        cc.find("Canvas/BackBtn").on(cc.Node.EventType.TOUCH_START,function(){
            cc.director.loadScene("game")
         })
         this._beginWar()


    },

上面使用的是返回初始场景  在下面定义一个方法,他的作用是执行战斗所产生的功能



 var npcob={
            id : 1,
            name:"碟仙",
            pic:"pic/map_person/42",
            life:500,
            lifiGrow:25,
            attack:25,
            attackGrow:10,            
        }


这是做的假数据 防止与真数据产生错误,防止误导后面的事件



_build:function(ob,mapCs,fund){
        var that = this
        cc.loader.loadRes("prefab/pkpand",function(err,mapCsv){ 
            var newNode = cc.instantiate(mapCsv)
            that._addSpriteFrameTotainer(newNode.getChildByName('guaispert').getComponent(cc.Sprite),ob.pic)
            newNode.setPosition(mapCs)
            newNode.getComponent("buildnewsprte").builidata(ob)
            if(fund){
                that._enenyArr.push(newNode)
                
            }else{
                that._phyerArr.push(newNode)
            }
            
            that.npcbel.addChild(newNode)
            
            that._rhddgad()
            
            })
    },


这是实现把两个假数据存放在数组里




//NPC坐标移动 掉血   实现攻击掉血效果 通过封装一个方法 在下面调用执行
    _fightIn2Person:function (personArr1,personArr2) {       
        var that = this       
        var node = personArr1.shift();
        var sedNpc = personArr2[0];
       
        var nodePo = node.getPosition();
        var sedNpcPo = sedNpc.getPosition();


        node.runAction(cc.sequence(
            cc.moveTo(0.5,sedNpcPo),
            cc.callFunc(countAttack),
            cc.moveTo(0.5,nodePo),
            cc.callFunc(attackEnd),
             ))
        function countAttack(){
            cc.log("掉血")
            var a =Math.random()
            sedNpc.getComponent('buildnewsprte').pub_beHit(
                a>0.5?node.getComponent('buildnewsprte').attArr():node.getComponent('buildnewsprte').attArr()*2)
                if(a>0.5){
                    cc.find('Canvas/UI/laTXT').getComponent(cc.Label).string ="攻击"
                }else{
                    cc.find('Canvas/UI/laTXT').getComponent(cc.Label).string ="暴击"
                }
        }

0 0
原创粉丝点击