mugen游戏制作学院吧 关注:626贴子:834

mugen人物制作教程

只看楼主收藏回复

mugen人物制作教程

part1

 

       通过这么久的学习,大家应该也知道了一些mugen的基本知识。那么从这期开始,我们开始大家最关心的人物制作教程!

       不过要做一个人物需要的时间和精力比较多,要有一定的心理准备哦~

 

       诚邀极限流师傅坂崎良作为我们的示范人物,也就是说我这里给大家讲演的就是坂崎良的制作全过程~

 

1, 文件结构信息 def

 

       首先我们先在chars目录下建立一个新的目录,目录名 ryo。

 

       建几个文件:

ryo.def

ryo.air

ryo.cmd

ryo.cns

 

       然后编辑ryo.def

 

[Info]

name = "Ryo Sazaki"         ;人物全名

displayname = "Ryo"         ;人物在游戏中显示的名字

versiondate = 10,29,2002    ;人物最后更新日期(方便版本控制而已,没有什么实际意义)

mugenversion = 04,14,2001   ;人物适应的mugen版本

author = "Misamu K Young"   ;人物的制作者,当然是署上您自己的大名了!

;pal.defaults = 1            ;默认的色表顺序(由于我们现在还没有做色表,所以先把这段注释掉,mugen程序的注释的方法就是在前面加";"号)

 

 

; 人物文件列表

[Files]

cmd     = ryo.cmd   ;出招方法及条件

cns     = ryo.cns   ;人物定义

st      = ryo.cns   ;人物states

stcommon = common1.cns ;公用states

sprite  = ryo.sff   ;图片

anim    = ryo.air   ;动画编号等

;sound   = ryo.snd   ;声音文件,现在暂时不加

 

 

       先暂时写这些吧,保存。

 

2,图像信息 sff

 

 

       然后,我们开始抓图,首先先抓大小头像和站立,前进,转向,后退,跑步,急退等动作。

除了大头像不必使用公用色表外,其他图片都需要公用色表(公用色表就是说这些图片的颜色表是一样的。)抓图以及图片处理在前面的杂志上都有做过详细介绍,不熟悉的的话可以找以前的杂志或者下载电子版查阅。这里就不详细说明了,就大概的介绍一下步骤吧。

 

a,使用你习惯的模拟器抓这些图,记得把背景色设为洋红色或其他比较显眼的颜色。

b,使用acdsee或其他工具将这些bmp或png格式的图片转换成pcx格式。

c,把一张人物的图片用paint shop 或photoshop 打开,转成256色,并把黑色和洋红色位置互掉,然后保存该色表(图片不需要保存)。

d
,除大头像外其它图片也load这个色表,保存。

 

 

       图片处理好后,接下来的步骤就是使用mcm这个工具来制作sff文件了。

 

首先加入大小头像.

Sff ->Add Sprite ,选图片,输入编号,加入. 

值得注意的是在加入图片的时候有些要注意的东西,如下图所示


记得在加大头像 9000,1的时候要把共享色表 ,"Use shared palette" 前面的勾去掉.

 

小头像编号为9000,0。大头像的编号为9000,1。


 

然后再加入站立动画,


站立图等其他的图都要对准坐标, 坐标一般设在人物重心处,当然也要考虑图片之间的过渡的平滑.


 

再来就是转向的图,站立转向的图片编号是5,0 ,蹲下转向的图片编号设为6,0


下蹲的图片,编号是10,0--10,1


前进的图片,编号是20,0--20,5


同样后退的图片,编号21,0--21,5


跑步和急退的图片,编号100,0-100,5  和105,0


保存该sff为ryo.sff

 

 

3,动作定义信息 air

 

然后我们开始air文件的制作。

用文本编辑器打开air文件。

 

;站立动作

[begin action 0]

0,0,0,0,63 ;前面两个数字是图片在sff中的编号,第三个和第四个是相对坐标,最后一个是该帧图片的持续时间。

0,1,0,0,13 ;图片的时间可以用模拟器数.或者你偷懒的话随便写也成,不过感觉可能会有点怪.

0,2,0,0,13



1楼2006-06-08 16:46回复

    0,3,0,0,27

    0,2,0,0,13

    0,1,0,0,13

     

     

    ;站立转向

    [begin action 5]

    5,0,0,0,1,H;后面再加一个H表示是关于x轴对称

    5,1,0,0,2

    5,0,0,0,2,

     

    ;蹲下转向

    [begin action 6]

    6,0,0,0,2,H ;后面再加一个H表示是关于x轴对称

    6,0,0,0,4

     

    ;站立到蹲下的过渡动作

    [Begin Action 10]

    10,0,0,0,1

     

    ;蹲下的动作

    [Begin Action 11]

    10,1,0,0,1

     

    ;蹲到站的过渡动作

    [Begin Action 12]

    10,0,0,0,3

     

    ;往前走动作

    [Begin Action 20]

    20,0,0,0,7

    20,1,0,0,7

    20,2,0,0,7

    20,3,0,0,7

    20,4,0,0,7

    20,5,0,0,7

     

    ;往后走的动作

    [Begin Action 21]

    21,0,0,0,7

    21,1,0,0,7

    21,2,0,0,7

    21,3,0,0,7

    21,4,0,0,7

    21,5,0,0,7

     

    ;跑步

    [Begin Action 100]

    100,0,0,0,4

    100,1,0,0,4

    100,2,0,0,4

    100,3,0,0,4

    100,4,0,0,4

    100,5,0,0,4

     

     

    ;刹车

    [Begin Action 101]

    101,0,0,0,3

     

    ;疾退预备动作

    [Begin Action 105]

    101,0,0,0,3

     

    ;疾退空中

    [Begin Action 106]

    105,0,0,0,-1

     

    ;疾退着地

    [Begin Action 107]

    101,0,0,0,3

     

     

    光是写好这些编号还不够,还必须给这些anim画上打击框和被打击框,这里可以借助工具airedit或mcm。

    airedit是dos工具,这里也就介绍mcm吧。

    选air的目录Air ->load ,把ryo.air读进去.这时候就可以看到ryo的上面的一些动作,点"play"那个按钮还可以看看效果.

    要画clsn2框就得点击clsn2那个按钮,如下图.


    按了之后就可以用鼠标在ryo身上画格子了:)


    全部图片都画好之后,Air - >Save ,覆盖ryo.air即可.

     

     

    4,程序定义信息 cns

     

    air搞定之后,接下来就是cns了。

    首先把下面这些参数抄下去。

     

     

    ;基本数据

    [Data]

    life = 1000             ;生命值

    attack = 100            ;攻击力百分比

    defence = 100           ;防御力百分比

    fall.defence_up = 50    ;打倒时防御力临时上升的百分比

    liedown.time = 12       ;倒地时间

    airjuggle = 15          ;空中连击修定值(不建议改)

    sparkno = 2             ;默认的攻击火花编号

    guard.sparkno = 41      ;默认的防御火花编号

    KO.echo = 0             ;被KO的时候,声音是否有回音效果

    volume = 0              ;语音音量修正值

    power = 4000            ;能量值(默认是3000,3段气)

    IntPersistIndex=0   ;var参数跨场次变化台阶

    FloatPersistIndex=40    ;fvar参数跨场次变化台阶

     

    [Size]

    xscale = 1              ;x轴缩放比例

    yscale = 1              ;y轴缩放比例

    head.pos = -10,-75      ;头部大概的位置(在某些投技时候有用)choi这些矮个子y轴就应该低些

    mid.pos = -12,-40       ;中心大概位置(在某些投技时候有用)

    ground.back = 24        ;地面人物宽度(后)陈可汗这些肥肥这些参数就得设大些.

    ground.front = 22       ;地面人物宽度(前)

    air.back = 12           ;空中人物宽度(后)

    air.front = 11          ;空中人物宽度(前)

    height = 60             ;人物高度

    attack.width = 4,4      ;攻击宽度

    attack.dist = 160       ;攻击距离

    proj.attack.dist = 90   ;飞行道具距离

    proj.doscale = 0        ;飞行道具缩放比例

     

    [Velocity]

    walk.fwd  = 2.96078431  ;往前走的速度

    walk.back = -2.96078431 ;往后走的速度

    run.fwd  = 5.66666666, 0;跑步速度

    run.back = -4.5,-3.8    ;后退速度

    jump.neu = 0,-9.62352941;直跳速度

    jump.back = -2.55       ;后跳速度
    


    2楼2006-06-08 16:46
    回复

      jump.fwd = 2.5          ;前跳速度

      runjump.back = -2.55,-9.62352941;跑步中后跳跃的速度

      runjump.fwd = 5,-9.62352941;跑步中前跳跃的速度

      ;airjump.neu = 0,-8.1   ;空中直接跳跃速度

      ;airjump.fwd = 2.5,-8.1 ;空中前跳速度

       

      [Movement]

      airjump.num = 0         ;允许空中2段跳 (0,不允许 ;1 ,允许)

      airjump.height = 35     ;空中跳跃高度

      yaccel = .56862745      ;重力加速度

      stand.friction = .85    ;站立时的摩擦系数    

      crouch.friction = .82   ;蹲下中的摩擦系数

       

       

      ;再来就是写跑步的语法

      ;跑步

      [Statedef 100]  ;定义跑步的state号

      type    = S   ;角色的状态为S(站立),状态还可以为C(蹲下), A (空中),L(躺在地上) .

                    ;还有就是U( 维持前一个State的状态).这里设为S应该不难理解吧.

      physics = S     ;角色的受力环境为 S(站立) .还可以为C (蹲下),A(空中),N (没有任何受力环境)

                    ;不理解的话就举个例,比如S就有摩擦系数,A就有重力加速度等.

      anim = 100     ;对应的图片编号.

      sprpriority = 1       ;图层编号.可选 -5 到 5的之间的整数.数字越大越靠前.

                    ;两个图有重合的时候,数字小的会被数字大的遮住.

      velset = 0,0    ;x 轴和y轴速度设置

       

       

      [State 100, 1] ;

      type = VelSet   ;速度设置

      trigger1 = 1    ;在该state内的所有时间都需要进行设置

      x = const(velocity.run.fwd.x) ;取得前面设置的数字

       

      [State 100, 2]

      type = AssertSpecial;特别设置

      trigger1 = 1    ;在该state内的所有时间都需要进行设置

      flag = NoWalk       ;在这里设置这个参数,就不会进入步行的state.

       

      [State 100, 3]

      type = ChangeState       ;state转换

      trigger1 = command != "holdfwd";如果没有一直按住前的按钮

      trigger1 = Time > 12     ;同时需要12桢之后

      value = 101           ;进入刹车 state

                           ;完整的解释:如果没有一直按住往前的按钮在12桢之后就进入刹车的state

       

      ;---------------------------------------------------------------------------

      ; 跑步中止(刹车)

      [Statedef 101]

      type    = S

      physics = S

      anim = 101

      velset = 0

       

      [State 101, 1]

      type = ChangeState

      trigger1 = AnimTime = 0 ;101动画执行完后

      value = 0              ;进入待机的state

      ctrl = 1          ;同时把控制权交回

       

      ;疾退

      [Statedef 105]

      type = S

      physics = S

      anim = 105

      velset = 0

      ctrl = 0

       

      [State 105, 1]

      type = ChangeState

      trigger1 = AnimTime = 0

      value = 106

       

      [Statedef 106]

      type = A

      physics = N

      anim = 106

       

      [State 106, 1]

      type = VelSet

      trigger1 = Time = 0

      x = -8

      y = -3.5

       

      [State 106, 2]

      type = VelAdd

      trigger1 = Time > 0

      x =.3

      y =.45

       

      [State 106, 3]

      type = ChangeState

      trigger1 = Vel Y > 0

      trigger1 = Pos Y >= 0

      value = 107

       

      [Statedef 107]

      type = S

      physics = S

      anim = 107

      velset = 0,0

       

      [State 107, 1]

      type = PosSet

      trigger1 = Time = 0

      y = 0

       

      [State 106, 3]

      type = MakeDust           ;制造灰尘

      trigger1 = Time = 2       ;时间为第二桢

      pos = -5,-2            ;位置是-5,-2

       

      [State 107, 3]

      type = ChangeState       ;在动画执行完后回到待机的state,同时把控制权交回

      trigger1 = AnimTime = 0

      value = 0

      ctrl = 1
      


      3楼2006-06-08 16:46
      回复

         

         

         

        5,控制定义信息

         

        然后抄这些到cmd文件中

         

        ;-| Double Tap |-----------------------------------------------------------

        [Command]

        name = "FF"     ;Required (do not remove) 前跑

        command = F, F

        time = 10

         

        [Command]

        name = "BB"     ;Required (do not remove)  疾退

        command = B, B

        time = 10

         

         

        ;-| 2/3 Button Combination |-----------------------------------------------

        [Command]

        name = "call"

        command = y+a

        time = 1

         

        [Command]

        name = "recovery";Required (do not remove)

        command = x+y

        time = 1

         

        [Command]

        name = "c"

        command = y+b

        time = 1

         

        [Command]

        name = "z"

        command = a+x

        time = 1

         

        ;-| Dir + Button |---------------------------------------------------------

        [Command]

        name = "down_x"

        command = /$D,x

        time = 1

         

        [Command]

        name = "down_y"

        command = /$D,y

        time = 1

         

        [Command]

        name = "down_z"

        command = /$D,z

        time = 1

         

        [Command]

        name = "fwd_a"

        command = /F,a

        time = 1

         

        [Command]

        name = "fwd_b"

        command = /F,b

        time = 1

         

        [Command]

        name = "fwd_c"

        command = /F,c

        time = 1

         

        [Command]

        name = "fwd_x"

        command = /F,x

        time = 1

         

        [Command]

        name = "fwd_y"

        command = /F,y

        time = 1

         

        [Command]

        name = "fwd_z"

        command = /F,z

        time = 1

         

        [Command]

        name = "back_a"

        command = /B,a

        time = 1

         

        [Command]

        name = "back_b"

        command = /B,b

        time = 1

         

        [Command]

        name = "back_c"

        command = /B,c

        time = 1

         

        [Command]

        name = "back_x"

        command = /B,x

        time = 1

         

        [Command]

        name = "back_y"

        command = /B,y

        time = 1

         

        [Command]

        name = "back_z"

        command = /B,z

        time = 1

         

        [Command]

        name = "fd_x"

        command = /DF,x

        time = 1

         

        [Command]

        name = "fd_a"

        command = /DF,a

        time = 1

         

        [Command]

        name = "down_a"

        command = /$D,a

        time = 1

         

        [Command]

        name = "down_b"

        command = /$D,b

        time = 1

         

        [Command]

        name = "down_c"

        command = /$D,c

        time = 1

         

         

         

        ;-| Single Button |---------------------------------------------------------

        [Command]

        name = "hold_x"

        command = /$x

        time = 1

         

        [Command]

        name = "hold_y"

        command = /$y

        time = 1

         

        [Command]

        name = "hold_z"

        command = /$z

        time = 1

         

        [Command]

        name = "hold_a"

        command = /$a

        time = 1

         

        [Command]

        name = "hold_b"

        command = /$b

        time = 1

         

        [Command]

        name = "hold_c"

        command = /$c

        time = 1

         

        [Command]

        name = "hold_s"

        command = /$s

        time = 1

         

        [Command]

        name = "a"

        command = a

        time = 1

         

        [Command]

        name = "b"

        command = b

        time = 1

         

        [Command]

        name = "c"

        command = c

        time = 1

         

        [Command]

        name = "x"

        command = x

        time = 1

         

        [Command]

        name = "y"

        command = y

        time = 1

         

        [Command]

        name = "z"

        command = z

        time = 1

         

        [Command]

        name = "s"

        command = s

        time = 1

         

        ;-| Hold Dir |--------------------------------------------------------------

        [Command]

        name = "holdfwd";Required (do not remove)

        command = /$F

        time = 1

         

        [Command]

        name = "holdback";Required (do not remove)

        command = /$B

        time = 1

         

        [Command]

        name = "holdup" ;Required (do not remove)

        command = /$U

        time = 1

         

        [Command]

        name = "holddown";Required (do not remove)

        command = /$D

        time = 1

         

        ;---------------------------------------------------------------------------

        [Statedef -1]

        ;---------------------------------------------------------------------------

         

        ;前跑

        [State -1, Run Fwd]

        type = ChangeState             ;state跳转

        value = 100                  ;跳到state 100

        trigger1 = command = "FF" ;如果按了前前这个出招

        trigger1 = statetype = S ;同时状态为站立

        trigger1 = ctrl               ;而且可以是可控制状态

         

        ;后跳

        [State -1]

        type = ChangeState              ;state跳转

        value = 105                  ;跳到state 105

        trigger1 = command = "BB" ;如果按了疾退的出招

        trigger1 = statetype = S ;同时状态为站立

        trigger1 = ctrl = 1         ;而且可以是可控制状态

         

        嗯,之后就可以试着运行一下.

        嘿嘿,至少可以有站立,蹲下走和跑等动作了吧!



        篇幅有限其他的之后再讲了~

         

         

        示范人物下载
        


        4楼2006-06-08 16:46
        回复
          • 59.191.115.*
          大哥啊,什么文件才能让选人图标显示在游戏中呢?选人图片


          5楼2006-09-19 22:48
          回复
            • 218.19.112.*
            大哥太复杂拉~~有图片教程吗~~


            6楼2006-09-24 13:38
            回复
              嫌复杂还做毛人物,还图片教程,有用图片来教写程序的吗


              IP属地:江苏7楼2007-06-18 13:39
              回复
                • 219.137.232.*
                怎么没有啊~你白痴啊!


                8楼2007-08-07 22:43
                回复
                  好长


                  IP属地:浙江9楼2007-09-24 20:36
                  回复


                    IP属地:江苏10楼2007-11-19 16:01
                    回复
                      ding ``


                      11楼2007-11-29 10:19
                      回复
                        啊………


                        12楼2008-01-24 18:43
                        回复
                          好贴,顶,希望加油把连续技部分详细介绍一


                          13楼2008-02-04 15:22
                          回复
                            • 218.27.70.*
                            呵呵,有好多都是自学知道的,哈哈.我太天才了..


                            14楼2008-02-08 12:35
                            回复
                              • 218.27.70.*
                              楼住有个地方错了:
                              airjump.num = x 是在天上跳x


                              15楼2008-02-08 13:47
                              收起回复