2dfm吧 关注:2,094贴子:39,620

2DFM中的变量怎么用啊?

只看楼主收藏回复

这个变量的功能我一直都不能理解,不知道通过这个变量可以做些什么事,也不知道什么时候该用变量,哪位大侠可以发一下详细的教程啊?结合实例具体的说明一下啊?


IP属地:内蒙古1楼2011-06-09 12:56回复
    变量的使用教程
    第一部分 变量的意义
    变量是做什么用的?
    2dfm中,计算机能自动识别很多东西,比如人物坐标,血量气量,图号,招式项目号,招式步骤号等等。
    但是,如果我们制作一个会多种变身的人物,怎么让计算机知道它该处于第几种变身状态呢?
    再比如,我要制作一个随着蓄力时间越长,杀伤力越高的飞镖,怎么让计算机知道它蓄力了多久呢?
    。。。
    显然,2dfm中没有提供现成的功能来直接制作这些。而我们发现,这些功能都有个共同特点:
    它们都需要一个特殊的数值标志来供计算机识别。
    比如说多种变身的人物需要一个数值标志告诉计算机,它应该处于第几种变身状态;蓄力飞镖需要一个数值标志来告诉计算机它蓄力了多久。
    这种数值标志,就是存储在变量里的。
    可以说,变量就像是是一个盒子,里面装着数量作为识别标志,就像是计算机的联络暗号一样,根据不同的暗号,计算机来实施不同的行动。
    所以,变量有三个基本功能:
    1---赋值,就是给变量设置一个数值,相当于在盒子里直接放一个暗号。
    2---计算,通过简单的加减来改变变量的数值,相当于我们用简单的数学方法间接改变暗号。
    这两种功能都是在盒子里放东西或者偷偷换掉东西。
    3---对变量的数值进行判断,这也就是查看盒子里到底有什么,然后根据暗号来实施对应行动。
    


    5楼2011-06-09 22:47
    回复
      第二部分 变量使用的基本思路
      以多重变身的人物来说,要实现变身,首先我们需要把每一种变身状态的动画都做出来。
      这也就等于是给计算机安排了好几种显示方案,每一种变身对应一种显示方案。
      而显示一种变身状态的动画,可以看作是计算机的一种行动方案。
      那么,我们需要给每一种变身状态的动画,设定一个数值标志,相当于是一个告诉计算机应该执行这个方案的暗号。
      例如,我们的人物有3种变身(一种本体,两种变体,比如变形金刚的机器人形态,拟态,组合金刚部件形态)。
      我们需要制作这三种状态互相转变的招式动画,有了这些动画,才能过渡变身。
      6种 {变身过渡} 动画分别是:
      1--拟态=〉机器人形态 这个动画中设置变量A值=1
      2--组合金刚部件=〉机器人形态 这个动画中设置变量A值=1
      3--机器人形态=〉拟态 这个动画中设置变量A值=2
      4--组合金刚部件=〉拟态 这个动画中设置变量A值=2
      5--机器人形态=〉组合金刚部件 这个动画中设置变量A值=3
      6--拟态=〉组合金刚部件 这个动画中设置变量A值=3
      目标形态相同时,应该有相同的数值标志,因为这些标志代表这个目标形态。所以,机器人形态的标志是1,拟态的形态的标志是2,组合金刚部件的标志是3
      我们把这些标志都放在同一个变量A中,是为了将来计算机能统一检测A。如果你放在不同的盒子里,计算机就得去翻看别的盒子,而且可能会和别的功能冲突(不同功能用的变量应该区别开,以免互相翻错盒子拿错暗号)。
      上面的设置就是用到变量的“赋值”功能,直接在变量盒子里放东西。
      只有暗号还不行,得让计算机能识别暗号并执行对应的方案。
      这就要在人物每个 非{变身过渡} 招式的招式开头,添加一个查看变量A数值的功能(打开盒子看看暗号是什么)。
      看完之后,还要设置让计算机根据不同数值,跳转去播放对应的变身动画。
      比如说,计算机翻开变量A盒子,看到里面的暗号是1,于是它应该跳转去播放机器人形态的动画。如果看到里面的暗号是2,它应该跳转去播放拟态的动画。
      我们说,一个人物有好多招式,既然它有3种变身,那么它的每个招式都应该事先做好3种变身下的动画,而我们要在每个招式开头添加翻看变量盒子里是什么的功能,来跳转到对应的动画去。
      在游戏中,玩家输入指令,使出了 机器人形态=〉拟态 的那个{变身过渡}招式,这个时候变量A数值就被设定成2了,在玩家使出其他{变身过渡}招式从而再次变身之前,变量A数值一直是2。
      那么,由于我们在人物的每一个招式的开头都设置了查看变量数值的功能,所以每个招式播放时,都会先检查变量A,发现它数值是2,于是跳转到这个招式的“拟态”状态的动画去。
      因此,只要变量A一直是2,那么人物的所有招式的动作都表现为拟态的,比如变成大卡车前进后退,跳跃的拟态动画是卡车原地不动等。
      当我们使出 拟态=〉机器人形态 这个{变身过渡}招式时,变量A的数值就被修改成1,这之后只要不再次变身,A就一直是1,那么计算机播放角色每个招式的动画时,都先检查A的数值,发现是1,于是自动跳转去播放机器人形态的动画,于是人物就处在机器人形态前进后退,下蹲和跳跃了。
      


      6楼2011-06-09 23:16
      回复
        以随蓄力时间长短改变杀伤力的飞镖来说,我们需要制作一个看不见的物体来充当计时器。
        当人物使出预备发射的蓄力招式时,这个计时器就自动出现(用[物]),并且在那里偷偷计时,这个计时器是一个看不见的动画,完全是由[图][图][图][图][图][图][图][图][图]组成的,其中每个[图]都引用一个透明不可见图片。我们设定每张图片的播放时间都是一样的,比如 10 单位的时间。那么我们就知道,从第一个[图]开始,每播放完一个[图],经过的时间是10。播放完4个[图]的时候,蓄力时间就是10 x 4=40。
        如果蓄力一直继续(也就是人物没有使用任何停止蓄力的招式),那么蓄力时间就是随着计时器的动画播放一直累加的。
        但是怎么让计算机知道经过了40这么长的时间呢?
        我们可以在每个[图]之前添加一个设置变量的功能,也就是赋值功能,给这个变量设置一个数值。
        比如说,我们这样写:[变30]表示给一个变量B设置数值30
        那么我们可以对刚才的一组[图][图][图][图][图][图][图]修改为:
        [变0][图][变10][图][变20][图][变30][图][变40][图][变50][图][变60][图][变70][图]
        在播放到第4个[图](还没播完)的时候,这个[图]之前的[变30]把变量B的数值设置为30,表示蓄力时间是30。
        那么,我们只要在发射飞镖的招式(这个招式一出,自动关闭看不见的那个蓄力计时器)开头添加变量数值的检查功能,由于发射飞镖的招式关闭了蓄力计时器,计时器播放到哪一个[图],就表明当前变量B的数值是最后播放的那个[图]之前的[变]所设置的数值,也就是之前经过的蓄力时间。
        那么,我们设置让计算机判断在蓄力时间小于30时(也就是变量B小于30),发射出一个小的飞镖,杀伤力弱。
        我们设置让计算机判断在蓄力时间大于29但小于60时(也就是变量B大于29且小于60),发射出一个中等大的飞镖,杀伤力中等。
        我们设置让计算机判断在蓄力时间大于59时(也就是变量B大于59),发射出一个大的飞镖,杀伤力强。
        这就实现了按蓄力时间长短发射不同杀伤力的飞镖。
        


        7楼2011-06-09 23:36
        回复
          第三部分 具体的使用
          首先你应该知道,[变]这个方格都有哪些功能,在编辑界面上怎样设置。
          默认的[变]:

          它分为3部分:
          -------------------------------------------
          变量设置,设置你要使用哪一个变量
          --------------------------------------------
          计算数值,对变量设置数值或者通过计算修改数值
          ---------------------------------------------
          条件分歧,判断变量数值,根据数值条件跳转执行其他招式步骤
          


          8楼2011-06-09 23:45
          回复
            选择变量:

            单击绿色区域可以选择列表中提供的48个变量中你想要用的那一个,2dfm提供的可用变量只有这48个实在是太少了(吐槽就不在这里进行了)
            同样是变量A,请注意,任务变量A、角色变量A、系统变量A这三者是完全不同的,不要混用。
            


            9楼2011-06-09 23:50
            回复
              计算数值:
              选择没有数值计算,就等于没有激活计算数值的功能。

              一旦你选择了“代入”,这就是给变量设置一个数值(默认设置是0,你可以用鼠标修改数字,只有勾选“代入”或“相加”时,数值框和“使用变量”前面的小方格才能激活),比如我给这个变量设置数值为正数10123,你还可以设置负数值。
              所谓代入,就是把数值代入上面我们选的那个变量。

              我们勾选“使用变量”:数值框变成无效,此时可以选择列表中的一个变量。

              例如我选择“时间”:这就表示把当前游戏倒数计时器的时间数值代入给任务变量A

              同样,如果我选择系统变量J,这就表示我把系统变量J的数值复制一份代入任务变量A。

              代入 这个功能,就是直接修改数值。你在部分选择了哪个变量,那么就是修改这个变量的数值。
              例如下面的这个例子里,无论任务变量A之前是什么数值,在这里都把它修改成和系统变量J一样的数值。但要记住,这里是对任务变量A作修改,没有修改系统变量J。
              


              10楼2011-06-10 00:04
              回复
                相加 的意思是在原有基础上加上一定数量。比如下图表示在任务变量A原有基础上增加数值100。若任务变量A原来数值是200,经过这个相加之后,它的数值就变成300

                相加一个 -100,等于从A中减去100:

                下图表示在A的原有数值基础上,加上B的数值,结果生成的是A的新数值,没有对B进行修改,只是借用B的数值作计算。
                相当于A+B的结果存储给A

                


                11楼2011-06-10 00:16
                回复
                  条件分歧部分:选择没有条件分歧,就是不去检查变量数值。

                  但你选择“相同的话 大于时 小于时”就会激活 数值框 和下面的“跳转目标框”:

                  但这样还不是完整的设置,而且会导致游戏中出现故障,因为你没有分配一个跳转目标,也就是说,你没告诉计算机,当任务变量A数值和 -100 相等时,计算机应该跳转执行什么动作。
                  所以,下面的设置才是合理的:

                  上图表示:检查任务变量A的数值,如果数值刚好等于-100,就跳转到“升官到团长4”那个项目的第0步骤(项目名称所在步骤)。
                  这个图来自一个RPG游戏的脚本2dfm可以做动作RPG,你不需要怀疑。
                  


                  12楼2011-06-10 00:28
                  回复
                    那么我们要问,如果任务变量A的数值不是 -100,那么接下来会如何呢?
                    实际上,如果变量数值不满足条件,就顺序执行这个[变]后面的一个方格。

                    例如:当前[变]所在的招式项目“升官到大臣7”中,当前的[变]之后是[招],如果当前[变]检测的条件不成立,那么就执行[招]。但如果条件成立,就去执行“升官到团长4”

                    


                    13楼2011-06-10 00:33
                    回复
                      这个设置表示 任务变量A 减去20后,判断 任务变量A 剩下的数值是否大于 -100,如果是,就跳转执行“升官到团长4”,否则就执行当前[变]之后的方格脚本。

                      而默认的这个设置表示不对任务变量A作任何的计算或者条件判断,这个方格等于什么都没执行,但可以作为占位使用,其他的脚本可以跳转到它这里来。
                      


                      14楼2011-06-10 00:41
                      回复
                        第四部分预告:变量分歧制作变身和蓄力飞镖的具体情况


                        15楼2011-06-10 00:43
                        回复
                          怎么不继续写了啊?真的获益良多啊


                          IP属地:内蒙古16楼2011-06-10 19:05
                          回复
                            支持。。。。~~


                            17楼2011-06-13 21:29
                            回复
                              等待更新啊!看了很多遍了,每一遍都有新的收获!


                              IP属地:内蒙古18楼2011-06-28 01:32
                              回复