1--攻击:
我们都知道存在所谓 攻击矩形 和 受伤矩形。当两者有一部分区域重合时,攻击命中。
但实际上在格斗游戏里,绝对不是这么简单就完了。格斗游戏中存在几个基本的相关问题:
比如说防御的存在,当身(格挡反抓)的存在,以及各种对空无效或对地无效属性的存在。
计算机要判断命中,它一般须按照下面的步骤进行一系列的判定:
--首先是判断敌人所处的状态是站立还是蹲还是在空中(空中就是人物纵坐标y大于0的状态,2dfm里面是小于0),那些对空无效的攻击,或者对地无效的攻击,此时都会被判定其有效性,有效时才会进入下一步判断,无效则直接判断为打空。
--然后判断被攻击方是否已经处于受伤或者防御成功的状态,这样计算机才能知道那些“不能追击”的攻击是否应该打空。不打空的话,才能进入下一步。
--第三步判断对手是否处于站蹲跳状态对应的那个防御技的预备姿态。如果人物确实处于对应预备姿态,则进入对应的防御状态(其实就是被攻击方的受伤标志为2表示防御),然后进行第四步的判断。如果人物不处于防御预备姿态,就直接进入受伤姿态(其实就是被攻击方的受伤标志为1表示受伤,不受伤时为0),跳过第四步,直接判断第五步。
[注:任何防御的发生机理如下:当人物处于该防御技的预备技能状态中,被敌人打中后就转入对应的防御成功状态。
按后防御的游戏中,站立后退和蹲着按住“后下”(有些游戏中就是蹲着后退),以及空中按“后”就是防御的预备姿态,这些姿态下的人物被敌人打中后就会自动转入对应的防御。
如果人物不处在这些状态,那么被打中后就进入敌人攻击技能设置的受伤反应。]
--第四步判断攻击方的攻击是否有“不可防御”属性,如果有,那么被攻击方的防御状态自动切换到受伤状态进行下一步判断。“不可防御”意味着被攻击方在这个攻击下不能使用出防御技,所以如果被攻击方不是处于防御预备姿态,它是一定不能使出防御技能的,则这个第四步会被跳过。
--第五步判断被攻击方受伤后转入什么状态,先判断攻击方是否要控制被攻击方后续的动作,如果是,就直接让被攻击方转入被控状态,抓招中抓住对手打就是一例。
如果不是控制,就转入下面的判断:判断受伤标志是1还是2,来判定被攻击方是该受伤还是该防御,具体的攻击和防御动作则由攻击方决定。
只要是进入了本步判断,就意味着被攻击方不是受伤就是防御成功了。即使是防御成功,但如果攻击方的攻击技规定被攻击者防御成功后也要转入受伤动作,那么防御成功的一方还是会受伤,这才是真正的“破防御”。也就是说,攻击破坏什么防御,完全是在这一步判断的。然后进入第六步。
--第六步判断被攻击方被攻击前是否已经处于当身状态或者霸体状态。有当身技能的人物只要使出当身技,就会令其一个标志变量从默认值0变为1,当身有效的时间内一直维持,过期后清0。这也就是当身标志。霸体技能发出后,当身标志是2。
如果人物受伤之前已经发出当身技或者霸体技,并且当身或者霸体状态没有结束就被攻击了,而且没有被敌人控制,只是普通的受伤,那么就会在本步骤(第六步)检测当身标志,如果标志是1,则人物不仅不会受伤,还会自动转入当身反击并开始最后一步判断。
如果标志是2,则人物也不会播放受伤动作,还是继续播放之前的动作并开始最后一步判断。
如果人物没有进入当身反击状态或霸体状态,会自动播放受伤动作或者防御成功动作,并开始最后一步判断。
---最后一步判断血量增减,如果没有进入当身反击,此时当身标志是0,则判断攻击方攻击是否磨血,并按照攻击方的攻击力以及被攻击方受伤修正率等攻防参数计算血量,从被攻击方血量中扣掉。如果当身标志是1,则扣血为0,并把标志清0。如果当身标志是2,一样扣掉生命,但是当身标志维持2直到原霸体技能剩余部分播放完毕清0。
我们都知道存在所谓 攻击矩形 和 受伤矩形。当两者有一部分区域重合时,攻击命中。
但实际上在格斗游戏里,绝对不是这么简单就完了。格斗游戏中存在几个基本的相关问题:
比如说防御的存在,当身(格挡反抓)的存在,以及各种对空无效或对地无效属性的存在。
计算机要判断命中,它一般须按照下面的步骤进行一系列的判定:
--首先是判断敌人所处的状态是站立还是蹲还是在空中(空中就是人物纵坐标y大于0的状态,2dfm里面是小于0),那些对空无效的攻击,或者对地无效的攻击,此时都会被判定其有效性,有效时才会进入下一步判断,无效则直接判断为打空。
--然后判断被攻击方是否已经处于受伤或者防御成功的状态,这样计算机才能知道那些“不能追击”的攻击是否应该打空。不打空的话,才能进入下一步。
--第三步判断对手是否处于站蹲跳状态对应的那个防御技的预备姿态。如果人物确实处于对应预备姿态,则进入对应的防御状态(其实就是被攻击方的受伤标志为2表示防御),然后进行第四步的判断。如果人物不处于防御预备姿态,就直接进入受伤姿态(其实就是被攻击方的受伤标志为1表示受伤,不受伤时为0),跳过第四步,直接判断第五步。
[注:任何防御的发生机理如下:当人物处于该防御技的预备技能状态中,被敌人打中后就转入对应的防御成功状态。
按后防御的游戏中,站立后退和蹲着按住“后下”(有些游戏中就是蹲着后退),以及空中按“后”就是防御的预备姿态,这些姿态下的人物被敌人打中后就会自动转入对应的防御。
如果人物不处在这些状态,那么被打中后就进入敌人攻击技能设置的受伤反应。]
--第四步判断攻击方的攻击是否有“不可防御”属性,如果有,那么被攻击方的防御状态自动切换到受伤状态进行下一步判断。“不可防御”意味着被攻击方在这个攻击下不能使用出防御技,所以如果被攻击方不是处于防御预备姿态,它是一定不能使出防御技能的,则这个第四步会被跳过。
--第五步判断被攻击方受伤后转入什么状态,先判断攻击方是否要控制被攻击方后续的动作,如果是,就直接让被攻击方转入被控状态,抓招中抓住对手打就是一例。
如果不是控制,就转入下面的判断:判断受伤标志是1还是2,来判定被攻击方是该受伤还是该防御,具体的攻击和防御动作则由攻击方决定。
只要是进入了本步判断,就意味着被攻击方不是受伤就是防御成功了。即使是防御成功,但如果攻击方的攻击技规定被攻击者防御成功后也要转入受伤动作,那么防御成功的一方还是会受伤,这才是真正的“破防御”。也就是说,攻击破坏什么防御,完全是在这一步判断的。然后进入第六步。
--第六步判断被攻击方被攻击前是否已经处于当身状态或者霸体状态。有当身技能的人物只要使出当身技,就会令其一个标志变量从默认值0变为1,当身有效的时间内一直维持,过期后清0。这也就是当身标志。霸体技能发出后,当身标志是2。
如果人物受伤之前已经发出当身技或者霸体技,并且当身或者霸体状态没有结束就被攻击了,而且没有被敌人控制,只是普通的受伤,那么就会在本步骤(第六步)检测当身标志,如果标志是1,则人物不仅不会受伤,还会自动转入当身反击并开始最后一步判断。
如果标志是2,则人物也不会播放受伤动作,还是继续播放之前的动作并开始最后一步判断。
如果人物没有进入当身反击状态或霸体状态,会自动播放受伤动作或者防御成功动作,并开始最后一步判断。
---最后一步判断血量增减,如果没有进入当身反击,此时当身标志是0,则判断攻击方攻击是否磨血,并按照攻击方的攻击力以及被攻击方受伤修正率等攻防参数计算血量,从被攻击方血量中扣掉。如果当身标志是1,则扣血为0,并把标志清0。如果当身标志是2,一样扣掉生命,但是当身标志维持2直到原霸体技能剩余部分播放完毕清0。