mugen吧 关注:78,953贴子:1,493,779
  • 6回复贴,共1

显示数字/指示物/气条的简易写法(使用一个变量)

只看楼主收藏回复

一般推荐写在helper内,当然要写本体内也没关系。
所有动画都需要循环播放或者-1时间


IP属地:浙江1楼2024-01-14 15:54回复
    首先是动画,按顺序连续设置0到9号动画(或者更多),这里我们假设从4970开始,4970为1号动画
    然后是记录对应本体相应参数的变量
    [State 0, VarSet]
    type = VarSet
    trigger1 = root,var(19) = [0,10000]
    v = 19
    value = 10-ceil(root,var(19)/1000)
    这里是helper内使用,本体var(19)数值为0到10000,对应helper,var(19)为0到10(向上取整)
    可以写额外的函数来限制helper上下限,毕竟会用函数值显示动画,超出上下限制可能显示错乱


    IP属地:浙江2楼2024-01-14 16:05
    回复
      显示的函数
      [State 0]
      type = Explod
      trigger1 = var(19) = [1,10]
      trigger1 = !numexplod(4969 + var(19))
      anim = 4969 + var(19)
      id = 4969 + var(19)
      ;通过var(19的值来显示不同动画,赋予不同id方便移除,!numexplod避免重复生成卡死主程序)
      Facing = 1
      postype = back;
      pos = 10,60
      ;通过开局生成的helper生成的火花无所谓,自己显示可以用IfElse(TeamSide=2,-1,1)控制火花方向,位置
      bindtime = -1;不绑定到对象
      removetime = -1
      scale = 1,1;气条类可以通过var(19)定义长度,则只需要一个动画即可,但注意还是要写id来方便移除
      supermovetime = 2147483647
      pausemovetime = 2147483647
      ownpal = 1;颜色固定
      ontop = 1;设置ontop = 1使得爆炸被画在所有精灵(sprites)和背景层的上层。该参数优先于sprpriority。


      IP属地:浙江3楼2024-01-14 16:15
      回复
        一移除的函数
        [State 0, RemoveExplod]
        type = RemoveExplod
        trigger1 = numexplod(4979)&&var(19)!=10&&var(19)>0
        trigger1 = 1||var(19) := -10
        trigger2 = numexplod(4978)&&var(19)!=9&&var(19)>0
        trigger2 = 1||var(19) := -9
        trigger3 = numexplod(4977)&&var(19)!=8&&var(19)>0
        trigger3 = 1||var(19) := -8
        trigger4 = numexplod(4976)&&var(19)!=7&&var(19)>0
        trigger4 = 1||var(19) := -7
        trigger5 = numexplod(4975)&&var(19)!=6&&var(19)>0
        trigger5 = 1||var(19) := -6
        trigger6 = numexplod(4974)&&var(19)!=5&&var(19)>0
        trigger6 = 1||var(19) := -5
        trigger7 = numexplod(4973)&&var(19)!=4&&var(19)>0
        trigger7 = 1||var(19) := -4
        trigger8 = numexplod(4972)&&var(19)!=3&&var(19)>0
        trigger8 = 1||var(19) := -3
        trigger9 = numexplod(4971)&&var(19)!=2&&var(19)>0
        trigger9 = 1||var(19) := -2
        trigger10 = numexplod(4970)&&var(19)!=1&&var(19)>0
        trigger10 = 1||var(19) := -1
        ;一旦对应火花存在,且var(19)与火花动画不对应,则把相应变量变成负数并启动移除上一个火花
        id = 4969 - var(19)
        supermovetime = 2147483647
        pausemovetime = 2147483647
        ignorehitpause = 1
        ;因为之前的火花动画都设置了var(19)为正,直到varset再次为v19赋值前,所有火花动画不启用,赋值后血条更新为新血条


        IP属地:浙江4楼2024-01-14 16:36
        回复
          如果要根据非固定参数条件改变显示(比如显示自己残血,显示自己防御力提升)则可以整合在一起,用一个helper的同一个函数显示
          [State 0]
          type = Explod
          triggerall = root,var(45) =1
          trigger1 = numexplod(4980) = 0
          anim = 4980
          id = 4980
          postype = back
          bindtime = -1
          pos = 24,194
          facing = facing
          sprpriority = 997
          removetime = -1
          supermovetime = 2147483647
          pausemovetime = 2147483647
          ownpal = 1
          ontop = 1
          [State 0]
          type = Explod
          triggerall = root,var(17) = 1
          trigger1 = numexplod(4990) = 0
          anim = 4990
          id = 4990
          postype = back
          bindtime = -1
          pos = 24,209
          facing = facing
          sprpriority = 997
          removetime = -1
          supermovetime = 2147483647
          pausemovetime = 2147483647
          ownpal = 1
          ontop = 1
          ………………………………
          [State 0, RemoveExplod]
          type = RemoveExplod
          trigger1 = numexplod(4979)&&root,var(33)!=1
          trigger1 = var(18) := 11&&0 ;之前的检测同时作为触发器,是因为气条类数值基本唯一所以没关系。这里涉及多个参数,避免互相干扰所以不作为开关
          trigger2 = numexplod(4980)&&root,var(45)!=1
          trigger2 = var(18) := 12&&0
          trigger3 = numexplod(4981)&&root,var(51)!=1
          trigger3 = var(18) := 13&&0
          trigger4 = numexplod(4982)&&root,var(45)!=1
          trigger4 = var(18) := 14&&0
          trigger5 = numexplod(4989)&&root,var(22)!=1
          trigger5 = var(18) := 20&&0
          trigger6 = numexplod(4990)&&root,var(17)!=1
          trigger6 = var(18) := 21&&0
          trigger7 = var(18) = [11,21];检测范围,启动开关
          id = 4968+ var(18)
          supermovetime = 2147483647
          pausemovetime = 2147483647
          ignorehitpause = 1
          [State 0, VarSet];写在上面那个参数的后面,负责在火花消除后把变量归0
          type = VarSet
          trigger1 = var(18) != 0
          v = 18
          value = 0
          supermovetime = 2147483647
          pausemovetime = 2147483647
          ignorehitpause = 1
          总之就是把要显示的火花顺序排放,通过检测条件赋值的同时id=xxxx+变量移除


          IP属地:浙江5楼2024-01-14 16:59
          回复
            很有用,谢谢


            IP属地:江苏来自Android客户端6楼2024-01-14 17:47
            回复
              six
              six
              six


              IP属地:广东来自iPhone客户端7楼2024-01-16 10:48
              回复