mugen游戏制作学院吧 关注:522贴子:837

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


相关推荐

梁玉玺洗地机特价优惠 全国连锁 7天无理由退换货 ,1台机器省10名人工、工厂、物业、小区解决地面清洁清洗等问题
广告

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
        大哥啊,什么文件才能让选人图标显示在游戏中呢?选人图片


        回复
        举报|5楼2006-09-19 22:48
          大哥太复杂拉~~有图片教程吗~~


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


            回复
            举报|7楼2007-06-18 13:39
              怎么没有啊~你白痴啊!


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


                回复
                举报|9楼2007-09-24 20:36
                  ding ``


                  回复
                  举报|11楼2007-11-29 10:19
                    天弘激光切割机,激光器可选, 加工成本低,三维激光切割机精密度高,性能稳定. 天弘激光焊接机十多年行业经验,采用德国IPG激光器,高效率高稳定.
                    广告
                    啊………


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


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


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


                          回复
                          举报|15楼2008-02-08 13:47
                            说自己是天才的都是蠢


                            回复
                            举报|16楼2008-04-11 15:12
                              完全看不懂。。。。


                              回复
                              举报|17楼2008-04-15 13:40
                                大哥啊,什么文件才能让选人图标显示在游戏中呢?选人图片 

                                就是啊```我也想知道这个```


                                回复
                                举报|18楼2008-05-11 08:11
                                  写得非常好啊,容易理解。支持!


                                  回复
                                  举报|19楼2008-05-30 15:41
                                    看论坛的教程看得头都痛,还是你的写得容易明白


                                    回复
                                    举报|20楼2008-05-30 15:42
                                      再顶一次!真的很不错的教程


                                      回复
                                      举报|21楼2008-08-23 19:19
                                        我有头脑 什么都有 就是没工具什么mcm的 找死找不到 大哥你能不能写个工具下载地址啊 方便我们新人学习啊!


                                        回复
                                        举报|22楼2009-05-02 09:40
                                          嗯 好帖 虽然还有些地方不太懂   呵呵 可能是还没下工具的缘故吧   不过内容写的这么详细 让我这个门外汉都懂了点 顶!!!!


                                          回复
                                          举报|23楼2010-10-16 23:52
                                            求~技能怎么做啊?


                                            回复
                                            举报|26楼2011-10-06 19:10
                                              这不是mugenXII Fliz的修改者。。。


                                              回复
                                              举报|27楼2011-11-20 11:08
                                                学习中


                                                回复
                                                举报|28楼2011-12-16 11:15
                                                  自己做人物还得自己写AI吗?


                                                  回复
                                                  举报|来自手机贴吧29楼2011-12-18 23:23


                                                    回复
                                                    举报|30楼2011-12-29 21:56