奥妮吧 关注:3,220贴子:34,928

修改招式的一点经验

只看楼主收藏回复

阶段性小结一下,就从KONOKO的拳开始吧
用记事本打开转换好的文件,一开始是这样的
<Oni>
<Animation>
<Lookup>
<Type>Punch</Type>
<AimingType>Punch</AimingType>
<FromState>Standing</FromState>
<ToState>Standing</ToState>
<Varient>Combat</Varient>
<FirstLevel>0</FirstLevel>
<Shortcuts />
</Lookup>
<oni>是每个文件都有的,<Animation>表示这是一个动作文件,结尾还有</Animation>和</oni>,奥妮的文件的格式都是这样,前面一个<栏目名称>,结尾又是一个</栏目名称>,夹在两个中间的是内容,如果没有内容就是<栏目名称 />
然后看夹在<Lookup></Lookup>中的部分,Type栏表示招式的种类,Punch就是拳,不同的种类的按键都设定好了,Punch就是按拳击键出招,默认鼠标左键和F键;顺便说一下像KONOKO的后+前+踢其实并不是真的后前踢,出招的设置其实没有后+前+攻击键的。
下面一个AimingType,不太明白什么用也许和射击有关,这个一般都是写成跟Type一样的。
FromState,指的是出招所需要的状态,这里写Standing就是说要在Standing的状态下才能出这招,就是站立状态,如果跳或蹲就不能出这招了。KONOKO的后前踢其实就是在向后退的开始阶段使用前+踢。
ToState 招式结束后的状态。这招是会让KONOKO回到Standing的状态,就是没改变,但是有些招会让人进入别的状态,比如跳会进入Flying,蹲会进入Crouch,虽然是结束后才改变状态,但在出招时电脑就会检查这一项了,比如TANKER的前冲踢会进入LieBack状态,在这个状态下TANKER有个躺地上的动作,而KONOKO没有这个动作,所以电脑就不会让KONOKO使出这招了。
Varient 变量。不太明白,有点像上面说的状态,很多招式都是Combat,combat就是格斗的意思,还有像冲、跳、蹲、冲拳、冲腿则是没有内容。KONOKO平时是一种站立姿势,进入战斗状态后又是另一种站立姿势,两种站姿的Varient不一样。
FirstLevel 很好理解,就是关卡限制,如果为0就是每一关都能用,1就是最早第一关才能用,依此类推。
Shortcuts 快捷方式。就是说,如果每招都只有1个FromState明显是不够的,为了在更多的状态下使出这招,系统提供了Shortcuts给我们,不过这招没有用到Shortcuts,那就不说了。
那么Lookup部分就讲完了,wiki上有全部的Type和State可查,wiki.oni2.net/OBD_talk:StNA#unused_types。其他部分下次再说……


IP属地:广西1楼2012-10-18 21:33回复
    发这个…看的人最好有点写BSL的基础


    IP属地:山东来自手机贴吧3楼2012-10-18 22:38
    收起回复
      2025-12-26 03:29:56
      广告
      不感兴趣
      开通SVIP免广告
      不错,强烈支持技术帖


      IP属地:广东来自手机贴吧4楼2012-10-18 23:11
      收起回复
        像coool大一样改变这里吧 少年


        IP属地:上海来自手机贴吧5楼2012-10-19 07:55
        收起回复
          好,到下面了
          <Flags>Attack Atomic DontAim</Flags>
          这一组是一些动作的属性,Attack表示攻击,几乎每个有攻击的动作都有这个,但是好像没有实际的作用,去掉也没什么改变,老外猜测可能跟后面的pause有关。
          Atomic就比较重要了,当Flags栏中有这个的时候,这一招将从头到尾有Atomic属性,什么是Atomic属性?角色在站立、蹲着的时候可以随时做其它动作,而一些攻击动作得等结束了才能做别的动作,站和蹲是没有Atomic的,可攻击的动作一般都有Atomic,也就是动作发出来时不被自己的其他动作打断的效果。
          DontAim 不要用武器瞄准。还有一些别的属性,在上面我发的链接可以看到。比较常用的还有
          Invulnerable 无敌;InAir空中攻击都有,但作用不明,去掉了也不影响出招;ThrowSauce投技都有的;ThrowTarget被投的动作都有的,有了这个会使你的攻击能伤到友军,而且不能改变动作的方向,你只能用鼠标改变视角;DoAim 用武器瞄准。BlockHigh 防御上方攻击;BlockLow 防御下方攻击。这两个在某些Type的动作中似乎没用。再往下,
          <Atomic>
          <Start>0</Start>
          <End>65535</End>
          </Atomic>
          Atomic的作用介绍过了,这一栏就是上面没有Atomic属性时才会用到的,Start是Atomic效果开始的帧数,End是效果结束的帧数,站立姿势时这两行写的是Start 1 End 0,还没开始就结束了……
          <Invulnerable>
          <Start>0</Start>
          <End>0</End>
          </Invulnerable>
          无敌开始和结束。无敌可以免疫投技,我在受创动作中加入Invulnerable属性,但没用,反倒是BlockHigh有用,可以防住1击之后做动作,比如跳,如果不动就会被下一击打中,防不了。
          <Overlay>
          <UsedBones />
          <ReplacedBones />
          </Overlay>
          覆盖动作,wiki上说是持枪时会用到,会把持枪的动作用到正常的动作中的特定部位(一般是手部)但不影响其他部位。
          <DirectAnimations>
          <Link>TRAMKONCOMcomb_p_p</Link>
          <Link>TRAMKONCOMkick_fw</Link>
          </DirectAnimations>
          指向动作,TRAMKONCOMcomb_p_p是KONOKO拳连击的第二拳,TRAMKONCOMkick_fw是前踢,这跟后面的Pause和Interpolation有关。


          IP属地:广西6楼2012-10-19 14:05
          回复
            x大好厉害...以后我也要学bsl


            7楼2012-10-19 14:07
            收起回复
              <Pause>
              <Hard>0</Hard>
              <Soft>0</Soft>
              </Pause>
              停顿 使收招后会有一定的帧数不能操作,Hard的是不能做任何动作,Soft也是不能动,但DirectAnimations中写的两个动作除外,有时候我们觉得某些招收招很慢但又能连上特定的招式,就是这个Pause在作怪,原版几乎所有招式中(我好像没见过例外)Hard都是0。Pause期间不能出招,切记!在一些时间短的招上加Pause的话会影响手感!Pause还会影响到某些动作的衔接,比如你一个距离长时间长的招,出招时掉到楼下了,如果没有Pause你还会在空中继续这招剩下的动作,如果有Pause你就立马收招了。一些收招时改变状态的招也会延迟状态转换直到Pause结束。比如我搞个动作A,收招时转换到状态甲,状态甲下只有一个动作B(Type Stand)能执行,动作A没Pause的话收招会自动执行动作B,因为B的Type是Stand;如果有Pause,动作A就只能做个开头。奥妮有个秘籍killmequick,还有个命令chr_ultra_mode,就是让人能无视Pause行动,killmequick是对除KONOKO外的人都有效果。
              <Interpolation>
              <End>8</End>
              <Max>65535</Max>
              </Interpolation>
              Interpolation 百度词典解释是n.窜改;添写,插补,在游戏中是收招时出现的一段过渡动作。比如striker的拳,其实时间很短,但是他的Interpolation下的End栏写着24,也就是他要由招式结束的那一帧动作,经过24帧逐渐过渡到下一个动作,我们看到的是striker打出的拳慢慢收回来。这个Interpolation可能影响下一个动作,我给muro弄了个拳拳脚的连击,是muro拳连击的前两拳+腿连击的第3脚(命名为MURCOMcomb_ppk),结果第三脚的动作有点点变形,然后我在DirectAnimations加上了MURCOMcomb_ppk就正常了。striker的第一拳除了24帧Interpolation,还有24帧Soft的Pause,这就使他收招时是逐渐过渡到站立动作。<Max>65535</Max>这个不太清楚,一般都是这么写的,可能是最大帧数限制吧。
              下面
              <FinalRotation>0</FinalRotation>
              <Direction>Forward</Direction>
              <Vocalization>65535</Vocalization>
              FinalRotation是收招时的方向旋转,不转向的招这里都是0,空中向后出拳出脚的就把这里改成179.999985了,为何不是180我也不知道。还有TANKER的蹲下起立踢,这里也差不多是180。原版中KONOKO的前冲投技——绝命锁喉是对手背对KONOKO倒地,并且保持无敌直到起身,但是把对手被投后的无敌取消掉,你会发现,你一打他他就正对着你,其实是因为你看他动作已经转过身去了,但那只是一个动作而已,他的方向数据并没改变,必须招式结束后他才会受FinalRotation的影响而真正改变方向,你在他变向前打他自然会让他朝着你。
              Direction 方向,不太明白……有空再查查wiki吧,感觉不出有什么作用。
              Vocalization 出招时发出喊音,必杀技一般是6或7,65535就没有声音。


              IP属地:广西本楼含有高级字体8楼2012-10-19 14:42
              收起回复
                这么好的帖子,吧主给个精吧,好久没精品贴了!!!@qukuan2009 


                9楼2012-10-19 18:02
                回复
                  2025-12-26 03:23:56
                  广告
                  不感兴趣
                  开通SVIP免广告
                  <ActionFrame>65535</ActionFrame>
                  ActionFrame 动作帧?照字面猜就是到了设定的帧数后执行动作,65535超过动作的最大帧数,也就是不可能达到这一帧然后执行动作。可能某些Type的招式才会用到这个,比如忍者的teleport_in,ActionFrame的设定帧数是23,到了23帧他就瞬移了,我改成2,让KONOKO用这招,还没看到转圈就不见人了,不过瞬移不走,毕竟这是电脑专用招。
                  <Impact /> 攻击命中时的各种火花、光圈效果就是在这里设置的。
                  <Particles /> 攻击时,拳脚在空中拖曳出的各种光带、巴拉巴斯的地震波、甚至武器打出的子弹都是Particle,这个说起来很复杂……
                  <MotionBlur /> 残影效果
                  <Footsteps /> 脚步 应该是脚步声。
                  <Sounds /> 声音 这个不是出招时的喊声,是特殊的效果音,比如女战士的扫叶腿的风声、大muro的冲拳火车声、TANKER膝盖顶3下的邦邦邦硬响都靠这个发出。
                  下面到<Heights>了 字面意思就是高度,很好理解,招式的高度,设高了人就在空中,设低了人就入地,动作的每一帧都要设一个高度,AE自带的忍者闪避穿人那个MOD就是利用高度实现的,他把某几帧的高度设成了-700多,这样人就入地了,而且很深,在第3关的楼顶处,高度还不到600,可想而知有多深了。但是,稍微留心一点就会发现,KONOKO按跳的话,视角会跟着一起移动,可是用忍者影子冲时,人跑到地下去了,屏幕还显示着地上的情况,这是因为这个<Heights>不会让你真的上天入地……老外做了个Akane的角色,她的拳拳脚就是忍者的蹲下起立脚,可是你看她升到空中了却还是可以把她投到这说明她其实还在原地……又比如,TANKER的冲腿,明明看上去是跳起来踢的,但是他一收到攻击就站在地上了……也就是说不管怎么改<Heights>,人都去不到空中的,空中和地面之间的界限没法突破,用chr_debug_characters可以看到坐标,高度那个值是完全不变的,还有在空中按shift也一样,看上去增加了高度,其实高度坐标一点没变,虽然能跳上去一些平时跳不上去的地方,但是这跟高度坐标没关系,应该是跟碰撞判定有关。除了跳、地形因素、被子弹打飞外似乎没办法使人物升空了,我做了两个招式能改变高度坐标,但是没有升空,反而是入地了,看上去一开始是在天上,但收招时落回地面,并且有时候会穿过地面落下去摔死,甚至还有一些奇葩的穿墙效果……


                  IP属地:广西10楼2012-10-20 16:24
                  收起回复
                    在</Heights>下面的是
                    <Velocities>
                    这个是速度,每组<Velocity>-0.07845503 0.0625219345</Velocity>都有两个数字,第一个是左/右移动的,第二个是前后移动的,第一个数字中正的向左移,负的向右移;第二个数字,正的向前,负的向后,这个不像上面的Heights那么假,这个是真的影响到角色的位置坐标的。这个数字是每帧都有一组,在0.1~-0.1之间的时候没什么明显移动,1就已经很快了。
                    下面的<Rotations>是人物的动作,这个讲起来比较麻烦,虽然不算太难,不过数据比较多,留到后面再说吧。
                    <PositionOffset>作用不明,别管他了……
                    <Positions> 位置 每帧都有一组
                    <Position>
                    <Height>16.75</Height>
                    <YOffset>-0.48</YOffset>
                    </Position>
                    Height就是高度,不知道跟上面的<Heights>有什么关系;<YOffset>不清楚,Y在oni中似乎是高度,offset可能是补偿,大概可能是说这一帧的高度是16.75,然后16.75-0.48也算在内。
                    这个可能是AI判断出招者的位置用到的,我弄了个在地上的招式,然后把Height和YOffset都弄得很高,结果我出那招的时候发现电脑抬头看天……
                    <ThrowSource /> 你投对手时用到的
                    <SelfDamage /> 你被投时费血就是在这里设定
                    <Attacks> 这个动作的所有攻击判定都在这里
                    <Attack> </Attack>中间就是一个攻击判定,其中有
                    <Start>8</Start> 攻击开始的帧
                    <End>11</End> 攻击结束的帧
                    <Bones>RightWrist RightFist</Bones> 带攻击判定的身体部位
                    <Flags /> 一些效果,比如防御不能、站防不可、蹲防不可、防御损血
                    <Knockback>1.6</Knockback> 击退距离
                    <HitPoints>4</HitPoints> 威力
                    <HitType>HitHead</HitType> 攻击类型,
                    这里是“击中头部”另外还有“击中身体”“击中脚部”“击倒头部”“击倒身体”“击倒脚部”“击中珠宝”“击中脚部疼痛”
                    <HitLength>5</HitLength> 受创硬直的时间长度
                    虽然这里写5帧,但实际上感觉有10来帧,似乎有最少帧数的下限,我调成0了依然能把别人打出硬直,而且还可以把别人堵在角落用轻拳无限连。如果要击倒对手的话,这个最好不要大于5,或者不要大于下面的StunLength
                    <StunLength>8</StunLength> 防御硬直
                    <StaggerLength>0</StaggerLength> 类似防御硬直,但对手会做出站不稳向后退的动作,此时打他他不能防
                    <Extents> 这些是AI判断攻击位置的信息,每帧都有一组
                    <Extent>
                    <Angle>344.6134</Angle> 攻击角度
                    <Length>8.95</Length> 长度
                    <MinY>13.5099993</MinY> 最小Y值
                    <MaxY>15.2219458</MaxY> 最大Y值
                    </Extent> 这样的
                    Y值可能是高度,我对比过TCTFswat的前+踢和一些纵向范围大的招的MinY和MaxY,感觉可能是这样。
                    </Attacks>完了以后是
                    <AttackRing> 意义不明,有攻击的招式的都有,但不管攻击判定有多少,它都固定只有36个<Length>,我在wiki上暂时没找到详细说明,我猜测可能是提醒一定范围内的AI这个招式发生了攻击判定。好,差不多了,我感觉要说明<Rotations>是必须配图的,我去弄几个示范动作先。
                    


                    IP属地:广西11楼2012-10-21 23:06
                    回复
                      精华了,恭喜~


                      12楼2012-10-23 10:57
                      收起回复
                        <Rotations> 这些是各个身体部位、关节的动作,要修改动作的就在这里。
                        这里会有19组<Bone></Bone>的数据,每组是一个部位,按照顺序是
                        - pelvis 骨盆 最重要的部位,身体的中心
                        - left thigh 左大腿
                        - left calf 左小腿
                        - left foot 左脚
                        - right thigh 右大腿
                        - right calf 右大腿
                        - right foot 右脚
                        - mid 中部(腹部)
                        - chest 胸
                        - neck 脖子,可能影响两边肩膀
                        - head 头部
                        - left shoulder 左肩
                        - left arm 左臂
                        - left wrist 左碗
                        - left fist 左拳
                        - right shoulder 右肩
                        - right arm 右臂
                        - right wrist 右腕
                        - right fist 右拳
                        先看pelvis的动作,有这么一组数据
                        <Bone>
                        <EKey>8 -12.2609291 36.4202347 90.9572</EKey>
                        <EKey>3 -18.70451 70.01694 128.38269</EKey>
                        <EKey>3 -46.15427 79.1851654 162.1442</EKey>
                        <EKey>1 -108.2884 82.01419 -136.4303</EKey>
                        <EKey>1 -124.196838 81.409935 -121.675438</EKey>
                        </Bone>
                        <EKey>不知道这名字什么意思,在老外改的动作中也有是<QKey>的,<EKey>里有4个数字,<QKey>里有5个数字。
                        <EKey>8 -12.2609291 36.4202347 90.9572</EKey> 这一组中,第一个数字8指的是帧数,每一行的帧数加起来必然是这个动作的总帧数,而且这<EKey>好像最少得有两行,每行帧数最少是1,没见过1行的,也没见过帧数是0的。而在<QKey>中,帧数都是1,每帧的数据都得写出来……
                        后面3个数字是旋转角度,怎么旋转呢?看图
                        这是3个数字都是0的情况。每个部位的三个数字都是0。
                        当其他数字不变,第一个数字由0逐渐变成90时:

                        角色向里慢慢转身,到90时就会背对屏幕。
                        当其他数字不变,第二个数字由0逐渐变成90时

                        当其他数字不变,第三个数字由0逐渐变成90时

                        可以看出3个数字是沿哪几条轴旋转了。如果要角色背对屏幕站立,那么可以用
                        90 0 90,第1个90让KONOKO背对屏幕,第3个90把KONOKO立起来,或者0 90 90,第2个90让KONOKO头朝屏幕躺着,第3个90让她立起来。说起来不复杂,但是要做一个自己想要的动作还是很麻烦的。在<QKey>中那些数字好像不是角度了,可能是圆周率。
                        


                        IP属地:广西13楼2012-10-23 16:00
                        收起回复

                          这是我给muro弄的新招,原型是KONOKO的前+拳,我只改了pelvis
                          这是原来的数据
                          <Bone>
                          <EKey>7 -12.2609291 36.4202347 90.9572</EKey>
                          <EKey>4 -8.827649 -39.7821 78.9599457</EKey>
                          <EKey>7 -62.3978043 -79.04784 19.709774</EKey>
                          <EKey>3 -151.492783 -8.245365 -86.73838</EKey>
                          <EKey>5 -151.047836 25.3073921 -95.30785</EKey>
                          <EKey>2 -127.899292 81.0254059 -132.11261</EKey>
                          <EKey>2 -5.05928135 77.03731 100.054016</EKey>
                          <EKey>2 2.966354 62.0956726 87.8535156</EKey>
                          <EKey>3 1.27443349 51.88922 86.28245</EKey>
                          <EKey>1 -4.22430754 43.6054 87.80408</EKey>
                          <EKey>1 -6.21835661 41.9684143 88.6884842</EKey>
                          </Bone>
                          我修改后的数据
                          <Bone>
                          <EKey>7 36 30 90</EKey>
                          <EKey>4 45 -38 90</EKey>
                          <EKey>7 45 -58 90</EKey>
                          <EKey>3 50 -174 90</EKey>
                          <EKey>5 45 157 90</EKey>
                          <EKey>2 45 112 90</EKey>
                          <EKey>2 45 78 90</EKey>
                          <EKey>2 45 62 90</EKey>
                          <EKey>3 40 51 90</EKey>
                          <EKey>1 30 43 90</EKey>
                          <EKey>1 20 40 90</EKey>
                          </Bone>
                          当三个角度为45 45 90时,muro是前倾45度站立,身体沿头——脚为轴向右45度。这个动作是以此为基础修改的。


                          IP属地:广西14楼2012-10-23 16:08
                          回复
                            Varient 不是变量,好像是变体;刚试了下发现肩膀好像不受脖子影响,跟以前实验结果不同,也可能是搞错了……


                            IP属地:广西15楼2012-11-03 01:28
                            回复
                              2025-12-26 03:17:56
                              广告
                              不感兴趣
                              开通SVIP免广告
                              虽然看不太懂,不过确是好贴


                              IP属地:江西16楼2013-04-22 10:59
                              回复