回合制战斗

//将之前生成的预制件存入数组然后将数组进行深复制 后传入第二个方法

//传入的数组根据每次加载的次数不同进入不同的if条件,选择前和后放入数组



combat:function(){

        this._counter++
        if(this._counter % 2 == 0){
            this._fightIn2Person(this._friendArr.slice(),this._enemyArr.slice())
       }else{
            this._fightIn2Person(this._enemyArr.slice(),this._friendArr.slice())
        }

    },

//根据上个方法体传入的两个数组然后进行赋值 传入第一个数组的第一个预制件和第二个数组中的第二个预制件然后取得取出来的第一二个预制件的坐标然后第一个预制件位移到第二个预制件的坐标后再位移回来 这就是回合制游戏的打中效果

    _fightIn2Person:function(personArr1,personArr2) {
        var that = this
        var node = personArr1.shift();
        if(Math.random()<0.5)var sedNpc = personArr2[0]
        else var sedNpc = personArr2[1]
        var nodePo = node.getPosition();
        var sedNpcPo = sedNpc.getPosition();
        var actionTo1 = cc.moveBy(0.1,cc.p(100,0));
        var actionTo2 = cc.moveBy(0.1,cc.p(-100,0)); 
        node.runAction(cc.sequence(
            cc.moveTo(0.2,sedNpcPo),
            cc.callFunc(countAttack),
            cc.moveTo(0.2,nodePo),
            cc.callFunc(attackEnd),

        ))

//通过每一次位移到点后调用这个方法体 并且取得一个0.3的几率判断是否可以被闪避和被暴击双倍伤害不然就是普通命中 前面的两个0.3几率不闪避的情况下暴击的几率也为0.3 

//在"Canvas/ui/Label"下显示战斗情况

function countAttack(){
            if(Math.random()<0.3){
                cc.find("Canvas/ui/Label").getComponent(cc.Label).string = "进行到第"+that._counter+"回合"+"   闪避"    
                that.scheduleOnce(function() {
                sedNpc.runAction(cc.sequence(actionTo1,actionTo2))
             }, 0.1);
         }else if(Math.random()<0.3){
            cc.find("Canvas/ui/Label").getComponent(cc.Label).string = "进行到第"+that._counter+"回合"+"   暴击"
            sedNpc.getComponent('exercise').pub_beHit(node.getComponent('exercise').critical())
            }else {
                cc.find("Canvas/ui/Label").getComponent(cc.Label).string = "进行到第"+that._counter+"回合"+"   命中"
                sedNpc.getComponent('exercise').pub_beHit(node.getComponent('exercise').attArr())
            }
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity是一款流行的游戏开发引擎,可以用于创建各种类型的游戏,包括回合制战斗系统。回合制战斗系统是一种常见的游戏战斗机制,玩家和敌人轮流进行行动。 在Unity中创建回合制战斗系统可以遵循以下步骤: 首先,需要创建表示玩家和敌人的角色。可以使用Unity的角色生成工具或自定义角色模型进行创建。每个角色都应该有相关的属性,如血量、攻击力和防御力等。 接下来,需要设计战斗场景。可以创建一个2D或3D的地图,并设置战斗场景的背景、障碍物和其他元素。这样可以让玩家和敌人在合适的环境中进行战斗。 然后,需要编写回合制战斗系统的逻辑。可以使用Unity提供的脚本编写工具,创建角色行动和战斗规则的逻辑。例如,当轮到玩家行动时,可以让玩家选择技能或道具进行攻击或治疗。而当轮到敌人时,可以设置敌人的行为模式,如随机攻击或使用特定技能。 在战斗过程中,可以显示角色的状态和动作。可以创建UI界面,显示每个角色的血量、能量和效果状态。还可以使用动画和特效来展示角色的攻击和受伤过程,增强游戏的沉浸感。 最后,需要对战斗系统进行测试和优化。可以通过与游戏好友或使用Unity的测试工具进行测试,确保战斗系统的平衡性和流畅性。如果发现问题,可以调整角色属性、战斗规则或优化代码,以获得更好的游戏体验。 总的来说,Unity提供了强大的工具和功能,可以方便地实现回合制战斗系统。通过合理的设计和编码,可以创建出令人满意的游戏战斗体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值