在介绍脚本AI前,希望大家对2dfm有个清醒认识:
2dfm这个软件玩的主要是思路,而不是编程能力,因为即使你有很强编程能力,这软件本身的功能限制也注定你巧妇难为无米之炊
但很多制作方法其实都是用反常规思路的,反而效果非常好,制作也简单,能实现许多不可思议的功能(《斗魂》就是一例,提供了数十种额外功能,但2dfm所提供的变量资源还是有富余,很多高级功能根本不使用任何变量,而使用特殊思路制作的)
简而言之:这软件看似简陋,其实很强大,很多特殊功能的制作其实考验的是你的创意,而不是你学没学过编程(更加直白地说,学过编程也基本没啥用)
简单介绍一下脚本AI的制作(通常来说脚本AI的制作,我们都是回避的,因为它破坏游戏公平性):
【一】脚本AI的制作前提
这些手段是你必须会的,否则谈不上制作脚本AI。说到2dfm游戏制作的高级技术,其实指的就是这些(至于说你制作个什么扔飞镖、霸体、当身之类功能的招式,那都是低级制作水平领域的东西,以为制作理念上并没有什么真正技术含量的东西存在,而我在这里介绍的东西,大部分人是想不到的,或者根本不会朝这个方向想的)
1-------区分玩家和电脑:
脚本AI制作的前提是你会在2dfm中制作区分一个人物目前是被玩家控制还是被电脑控制的功能,具体的方法很多,但都需要使用变量,思路都是一样的:
在选人界面,人物的“海报”招式项目(默认22号黑体字项目)将会在选人光标移动到人物头像时显示出来
所以可以利用这个招式,在其中加入响应指令输入的【令】脚本,当玩家按下任意攻击键(也就是选定当前人物)时,这个脚本跳转去设定某个人物私有变量(任务变量或者角色变量)数值为1
这个变量的数值就将在脚本AI中随时用来判断人物是否是被玩家控制,当并非玩家控制时,才激活AI有关的脚本
2--------将自己的数据转换为可供敌人探测的媒介
最常用方法是,给我方加挂一个与源同在的物体,带有伤区,但伤区在画面外特定范围内。你需要给你游戏中所有人物进行统一规划,画面外的巨大区域需要合理划分,每一个属性的每一个数值都应划分有自己的区域,以免其他属性或其他数值的探测道具进入造成探测结果错误
例如我可以在人物每次攻击时,让他生成一个物体携带一个纵坐标为4000的画面外伤区,而任何人只要带有一个同等高度的攻击区,攻击命中这个伤区就可以知道我的人物处于攻击状态
而只要我的人物在非攻击状态时令这个伤区消失,敌人通过攻击检测不到这个伤区,就可以知道我方处于非攻击状态
再比如:我攻击力为100以下时,我还是使用刚才说的那个伤区来告诉敌人我的攻击状态存在。但我攻击力高于100时,我用另一个纵坐标5000的伤区来告知对手我不仅处于攻击状态,而且攻击力高于100
类似方法可以用来传递数据,只要你规划好什么数值生成什么位置的伤区,而对手有对应检测的手段即可
3--------建立探测手段
比如说我制作了某种机制来让战斗中的人物随时去知道对方与自己的水平距离大概在什么范围
一般可以用我的人物自带的一个画面外攻击区去探测对手人物携带的画面外被抓属性的伤区,这种攻击不会对敌人造成任何影响,即不会打断敌人行动,也不造成伤害,是2dfm中最常用的探测手段,可以用来制作很多中探测功能
除此以外,画面外物体相互攻击命中后修改变量也是一种可选的常用办法
通常需要探测的东西包括:
《1》敌人和我方的距离:
我只需要给人物加挂一系列“与源同在”的物体(在画面外特定范围内),它们各自带有不同远距离的攻击区,而被探测的敌人需要加挂一个与源同在的物体带有受伤区域,与我的探测用攻击区处于同一画面外范围,而其他探测功能的物体永远不会出现在这个区域内,那么我就可以用这些攻击物体来检测敌人位置
例如我加挂的最近攻击区域可以攻击到距离人物横向200像素以内的物体,如果他攻击命中,就说明有人在我身边200像素以内,该物体攻击命中后会修改一个变量的数值,我人物本体的脚本AI判断这个数值就可以知道敌人进入了200像素范围内,从而跳转去200像素内那些作战策略的设置脚本去
《2》敌人状态:
敌人的每一种状态,其实都需要他自己来报告给我,敌人需要根据自己每个状态来设置一个变量值,当然他自己不需要修改变量,这些都是在游戏之外设计框架时制定好的,什么数值对应什么画面外区域的伤区,而我方的检测手段就是用一个该区域内的攻击区去检测这个伤区是不是存在,如果是,就由我方来修改自己的变量存储这个状态数值(也就是探知了敌人状态)
4-------根据不同变量的数值所代表的情况来给电脑人物设计对策:
而所谓对策就是根据对应变量数值去做一个招式跳转
比如说,我检测到敌人距离我方200像素以内(用那一系列距离判断的攻击物体获取敌人位置,并且只有200像素范围的那个命中了,把某个我人物用来记录敌人位置的变量的数值修改成1。是1也行,是其他数值也行,反正你自己要知道这个数值表示敌人就在200像素距离以内的含义),且敌人蹲着(敌人所有蹲着的招式都创建一个物体携带某个特定画面外区域内的伤区,非蹲着的招式都没有这个伤区。我有个监测对应位置伤区的攻击物体,攻击命中就说明敌人是蹲着的,并且修改某个我用来记录敌人站蹲状态的变量数值为1,表示敌人蹲着),我用一系列变量数值判断脚本判定敌人既在200距离以内,又蹲着,于是跳转去人物的某个中段技,在游戏中看起来就是:
敌人靠近我方小于200像素时蹲下,我方自动判断这个情况并使用出了某个中段技
2dfm这个软件玩的主要是思路,而不是编程能力,因为即使你有很强编程能力,这软件本身的功能限制也注定你巧妇难为无米之炊
但很多制作方法其实都是用反常规思路的,反而效果非常好,制作也简单,能实现许多不可思议的功能(《斗魂》就是一例,提供了数十种额外功能,但2dfm所提供的变量资源还是有富余,很多高级功能根本不使用任何变量,而使用特殊思路制作的)
简而言之:这软件看似简陋,其实很强大,很多特殊功能的制作其实考验的是你的创意,而不是你学没学过编程(更加直白地说,学过编程也基本没啥用)
简单介绍一下脚本AI的制作(通常来说脚本AI的制作,我们都是回避的,因为它破坏游戏公平性):
【一】脚本AI的制作前提
这些手段是你必须会的,否则谈不上制作脚本AI。说到2dfm游戏制作的高级技术,其实指的就是这些(至于说你制作个什么扔飞镖、霸体、当身之类功能的招式,那都是低级制作水平领域的东西,以为制作理念上并没有什么真正技术含量的东西存在,而我在这里介绍的东西,大部分人是想不到的,或者根本不会朝这个方向想的)
1-------区分玩家和电脑:
脚本AI制作的前提是你会在2dfm中制作区分一个人物目前是被玩家控制还是被电脑控制的功能,具体的方法很多,但都需要使用变量,思路都是一样的:
在选人界面,人物的“海报”招式项目(默认22号黑体字项目)将会在选人光标移动到人物头像时显示出来
所以可以利用这个招式,在其中加入响应指令输入的【令】脚本,当玩家按下任意攻击键(也就是选定当前人物)时,这个脚本跳转去设定某个人物私有变量(任务变量或者角色变量)数值为1
这个变量的数值就将在脚本AI中随时用来判断人物是否是被玩家控制,当并非玩家控制时,才激活AI有关的脚本
2--------将自己的数据转换为可供敌人探测的媒介
最常用方法是,给我方加挂一个与源同在的物体,带有伤区,但伤区在画面外特定范围内。你需要给你游戏中所有人物进行统一规划,画面外的巨大区域需要合理划分,每一个属性的每一个数值都应划分有自己的区域,以免其他属性或其他数值的探测道具进入造成探测结果错误
例如我可以在人物每次攻击时,让他生成一个物体携带一个纵坐标为4000的画面外伤区,而任何人只要带有一个同等高度的攻击区,攻击命中这个伤区就可以知道我的人物处于攻击状态
而只要我的人物在非攻击状态时令这个伤区消失,敌人通过攻击检测不到这个伤区,就可以知道我方处于非攻击状态
再比如:我攻击力为100以下时,我还是使用刚才说的那个伤区来告诉敌人我的攻击状态存在。但我攻击力高于100时,我用另一个纵坐标5000的伤区来告知对手我不仅处于攻击状态,而且攻击力高于100
类似方法可以用来传递数据,只要你规划好什么数值生成什么位置的伤区,而对手有对应检测的手段即可
3--------建立探测手段
比如说我制作了某种机制来让战斗中的人物随时去知道对方与自己的水平距离大概在什么范围
一般可以用我的人物自带的一个画面外攻击区去探测对手人物携带的画面外被抓属性的伤区,这种攻击不会对敌人造成任何影响,即不会打断敌人行动,也不造成伤害,是2dfm中最常用的探测手段,可以用来制作很多中探测功能
除此以外,画面外物体相互攻击命中后修改变量也是一种可选的常用办法
通常需要探测的东西包括:
《1》敌人和我方的距离:
我只需要给人物加挂一系列“与源同在”的物体(在画面外特定范围内),它们各自带有不同远距离的攻击区,而被探测的敌人需要加挂一个与源同在的物体带有受伤区域,与我的探测用攻击区处于同一画面外范围,而其他探测功能的物体永远不会出现在这个区域内,那么我就可以用这些攻击物体来检测敌人位置
例如我加挂的最近攻击区域可以攻击到距离人物横向200像素以内的物体,如果他攻击命中,就说明有人在我身边200像素以内,该物体攻击命中后会修改一个变量的数值,我人物本体的脚本AI判断这个数值就可以知道敌人进入了200像素范围内,从而跳转去200像素内那些作战策略的设置脚本去
《2》敌人状态:
敌人的每一种状态,其实都需要他自己来报告给我,敌人需要根据自己每个状态来设置一个变量值,当然他自己不需要修改变量,这些都是在游戏之外设计框架时制定好的,什么数值对应什么画面外区域的伤区,而我方的检测手段就是用一个该区域内的攻击区去检测这个伤区是不是存在,如果是,就由我方来修改自己的变量存储这个状态数值(也就是探知了敌人状态)
4-------根据不同变量的数值所代表的情况来给电脑人物设计对策:
而所谓对策就是根据对应变量数值去做一个招式跳转
比如说,我检测到敌人距离我方200像素以内(用那一系列距离判断的攻击物体获取敌人位置,并且只有200像素范围的那个命中了,把某个我人物用来记录敌人位置的变量的数值修改成1。是1也行,是其他数值也行,反正你自己要知道这个数值表示敌人就在200像素距离以内的含义),且敌人蹲着(敌人所有蹲着的招式都创建一个物体携带某个特定画面外区域内的伤区,非蹲着的招式都没有这个伤区。我有个监测对应位置伤区的攻击物体,攻击命中就说明敌人是蹲着的,并且修改某个我用来记录敌人站蹲状态的变量数值为1,表示敌人蹲着),我用一系列变量数值判断脚本判定敌人既在200距离以内,又蹲着,于是跳转去人物的某个中段技,在游戏中看起来就是:
敌人靠近我方小于200像素时蹲下,我方自动判断这个情况并使用出了某个中段技