[ Mugen ] - 仓桥时深 演出代码 详解

仓桥时深 这个人物,是我在粉毛的 《大武斗祭》上看到的人物,

我觉得非常赞,因为其回血招数的演出让我感觉有很大的利用价值,所以,我今天上午花了一上午专门去搜集了人物,然后去拆了人物。

视频:http://www.bilibili.com/video/av2305858/


人物作者:Snowwolf(雪狼氏,2013年公开),还有一个版本是 despan氏(2010年公开)

人物下载:http://mugenguild.com/forum/topics/kurahashitokimi-released-150115.0.html

里面有 雪狼氏的 onedrive网盘地址。


最后的演出是这个样子:



该演出,在好几个状态号里都有,但都大同小异,

所以我就跳出一段出来说了。

代码:

[Statedef 1601]
type    = S
movetype= a
physics = S
ctrl = 0
velset = 0,0
anim = 750       ; 人物甩手的anim , 本体用

; 先让本体无敌
[State 0, NotHitBy]
type = NotHitBy
trigger1 = 1
value = SCA
time = 1

; --------------------------------------
; 变量var(1)初始化
[State 0, VarSet]
type = VarSet
trigger1 = time = 0
trigger2 = var(1) < 0
trigger3 = time = 499
v = 1
value = 0

; 给var(1)赋值,var(1)估计是“颜色叠加”方面的参数,用变量控制比较方便吧。


[State 0, VarSet]
type = VarSet
trigger1 = var(1) > 256      ; 变量var(1)一旦超过256,就固定为256
v = 1
value = 256

[State 0, VarAdd]
type = VarAdd                    ; 变量增加
trigger1 = time = [0,15]     ; 状态内时间在0~15帧内触发
v = 1
value = 10                          ;每一帧 var(1)加 10

; 当time = 15后,var(1) = 160 .变量var(1)初始化后为0

[State 0, VarAdd]
type = VarAdd
trigger1 = time = [600,625]       ; 600帧 ~625帧 var(1)每帧增加11
v = 1
value = 11

[State 0, VarAdd]
type = VarAdd
trigger1 = time = [626,650]       ; 625帧 ~650帧 var(1)每帧减少11  .650帧后 时止 结束。
v = 1
value = -11


; 以上一些变量操作
; ----------------------------

[State 0, BGPalFX]
type = BGPalFX
trigger1 = time = [0,500]
time = 1
add = -var(1),-var(1),-var(1)
mul = 256,256,256
sinadd = 0,0,0,10

[State 0, ALLPalFX]
type = ALLPalFX
trigger1 = time = [600,650]
time = 1
add = -var(1),-var(1),-var(1)
mul = 256,256,256
sinadd = 0,0,0,10

; 以上一些色表颜色变化的操作,通过变量var(1)来实现。
;----------------------------

; 时止650帧,用来表演。
[State 0, Pause]
type = Pause
trigger1 = time = 0
time = 650
movetime = 650

; 耗费2格气
[State 0, PowerAdd]
type = PowerAdd
trigger1 = time = 0
value = -2000


; --------------------------------
;  以下演出代码,通过Explod 来实现

[State 0, Explod]
type = Explod
trigger1 = time = 0    ; 刚进入状态时触发
anim = 951                 ; 951是 人物背后的光环动画号
ID = 951
pos = -5,-35               ; 根据p1 和 光环动画的大小来确定的 相对位置
postype = p1             ;; 显然 根据P1 来进行固定
facing = 1
bindtime = -1            ; 绑定时间为 不限时。
vel = 0,0
accel = 0,0
removetime = 376             ; 移除时间 376帧 ,刚好等于 anim(951)的时间
pausemovetime = 9000    ; 不被冻结的帧
removeongethit = 1         ; player被攻击后,这个explod会被移除。1是移除,0是不溢出。
scale = 0.8,0.8                    ; 尺寸 (x方向,y方向)
sprpriority = 0                   ; 图层优先级,数值大的图层动画(anim)覆盖数值小的。
ontop = 0                         ; ontop也控制图层的优先级,如果设置1,则explod会出现在所有

                                          ; 图片的上方。优先级比sprpriority更高。
ownpal = 1                       ; 独立色表,不被player的状态影响。


; 以下参数含义相同,请自行对照

[State 0, Explod]
type = Explod
trigger1 = time = 415    ; 注意开始时间
anim = 751                    ;背景放光的动画号
ID = 751
pos = 0,0
postype = back             ;这里选择是是back,相对于“P1的背侧”朝向屏幕左右边缘(x)和朝向屏幕顶端(y)
facing = 1
bindtime = -1
vel = 0,0
accel = 0,0
removetime = 72         
removeongethit = 1
pausemovetime = 9000
scale = 2,1
sprpriority = 5             ; 注意,这里的图层优先级是 5,动画会被下面的 7,8 和 9覆盖。
ontop = 0
ownpal = 1

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

; 这里把立绘动画放在了前面,这也是最精彩的部分
[State 0, Explod]
type = Explod
trigger1 = time = 450
anim = 853                  ; 立绘动画(没有颜色渐变),一张静态帧
ID = 853
pos = 0,0
postype = back  
facing = 1
bindtime = -1
vel = 0,0
accel = 0,0
removetime = 175        ; 总共放175帧
removeongethit = 1
pausemovetime = 9000
scale = 1.3,1
sprpriority = 7              ; 注意,这里的图层是 7,会被下面的 8 和 9覆盖。
ontop = 0
ownpal = 1

; 注意 计算一下上面的时间,450+175 = 625
; 也就是,上面这个explod从第450帧起
; 会一直作为类似背景一样的存在。第625帧之后会消失。anim动画也快表演结束了
; 毕竟时止只有 650帧。

[State 0, Explod]
type = Explod
trigger1 = time = 580          ; 580 、590、600 分别触发这3次,每次anim长10帧
trigger2 = time = 590
trigger3 = time = 600
anim = 854                          ; 立绘的颜色渐变版动画
ID = 854                               ; id=854,下面 ModifyExplod会用到
pos = 0,0
postype = back  
facing = 1
bindtime = -1
vel = 0,0
accel = 0,0
removetime = 10                   ; 10帧后移除,因为anim长度就是10帧
removeongethit = 1
pausemovetime = 9000
scale = 1.3,1
sprpriority = 9                      ; 注意,这里的图层是 9,会覆盖上面的图层7。目的就是覆盖
ontop = 0
ownpal = 1

;上面的颜色渐变anim的air代码为:
; 22007,0, 0,0, 7, , A
; 22007,0, 0,0, 1, , AS200D256
; 22007,0, 0,0, 1, , AS150D256
; 22007,0, 0,0, 1, , AS100D256
; 从上往下,颜色逐渐加深。刚好10帧

;-----------
; 以下是 变量var(4)的操作

;580、590、600分别初始化 变量var(4)。    580显然是 渐变立绘的开始时间。
[State 0, VarSet]
type = VarSet
trigger1 = time = 580
trigger2 = time = 590
trigger3 = time = 600
v = 4
value = 0

[State 0, VarAdd]
type = VarAdd                                   ; 变量增加
trigger1 = time = [580,610]              ;580开始就变量var(4)增加1。
v = 4
value = 1

;上面的变量var(4)会呈现 从1~10增加,然后再降到 1.再增加。不断的重复。直至time = 610帧

; 下面modifyexplod会定义 上面explod的大小。
[State 0, ModifyExplod]
type = ModifyExplod
trigger1 = time = [580,610]    
ID = 854                                          ; 注意,这里使用了上面的 854号 explod
trans = add                                     ; add - 完全透明叠加效果 
scale = 1.3+0.008*var(4),1+0.008*var(4)          ;尺寸的渐变。

尺寸的渐变,才是这段动画的精髓

;-----------------------------
; 下面是一些音频的切入。

[State 0, PlaySnd]
type = PlaySnd
trigger1 = time = 10
value = S20,13

[State 0, PlaySnd]
type = PlaySnd
trigger1 = time = 400
value = S20,14

[State 0, PlaySnd]
type = PlaySnd
trigger1 = animelem = 1
value = S10,14

[State 0, PlaySnd]
type = PlaySnd
trigger1 = time = 415
value = S10,13

[State 0, PlaySnd]
type = PlaySnd
trigger1 = time = 440
value = S0,3

;下方召唤helper,用处未知。
[state 400 1]
Type = helper
trigger1 = time = 649         ;time = 649,即 时止快结束的时候,召唤一个helper。
Helpertype = normal
id = (1603)
facing = 1
stateno = 1603
pos = 0,0
postype = p1
ownpal = 1
size.xscale = 1
size.yscale = 1
pausemovetime = 9000


;-----------------
; 下面继续 用explod演出。
; 注意,是一些上面立绘演出之前的演出。

; 时钟
[State 0, Explod]
type = Explod
trigger1 = time = 440          ; 440开始触发,注意,和上面的一些explod时间上有重叠。
                                              ; 有重叠,但是通过图层优先级 8 大于 5 和 7的关系,从而覆盖掉了上面的一些explod。下同
anim = 850                          ; 时钟的anim号。
ID = 850
pos = 0,0
postype = left                     ; left是表示根据屏幕左上角作为起始点,来进行anim的放置。
facing = 1
bindtime = -1
vel = 0,0
accel = 0,0
removetime = 116             ; 时钟的anim 时间长度
removeongethit = 1
pausemovetime = 9000
scale = 1.3,1
sprpriority = 8                    ; 注意,这里的图层是 8,会覆盖上面的 5 ,7
ontop = 0
ownpal = 1


; 时钟の指针(时针) 的 旋转
[State 0, Explod]
type = Explod
trigger1 = time = 440
anim = 851                      ; 时钟の指针(时针) 的 旋转动画号。
ID = 851                           ; id 会被下面的 modifyexplod引用到
pos = 165,125
postype = left  
facing = 1
bindtime = -1
vel = 0,0
accel = 0,0
removetime = 116         ; 动画时间长度
removeongethit = 1
pausemovetime = 9000
scale = 1.3,1
sprpriority = 9               ; 注意,这里的图层是 9,会覆盖上面的所有图层动画
ontop = 0
ownpal = 1


;引用 时钟の指针(时针) 的旋转动画。
[State 0, ModifyExplod]
type = ModifyExplod
trigger1 = time = [500,516]        ; time = 500 ~ 516 的时候触发
ID = 851                                      ; 引用上面的 851
trans = addalpha         ; 自定义透明叠加效果(必须指定alpha参数) ,显然它这里没指定。


; 时钟の指针(分针) 的 旋转
[State 0, Explod]
type = Explod
trigger1 = time = 440         
anim = 852                        ; 时钟の指针(分针) 的 旋转
ID = 852                            ; id 依然会被下面引用到
pos = 165,125
postype = left  
facing = 1
bindtime = -1
vel = 0,0
accel = 0,0
removetime = 116
removeongethit = 1
pausemovetime = 9000
scale = 1.3,1
sprpriority = 9
ontop = 0
ownpal = 1

; 引用 时钟の指针(分针) 的旋转动画。
[State 0, ModifyExplod]
type = ModifyExplod
trigger1 = time = [500,516]
ID = 852
trans = addalpha           ; 自定义透明叠加效果(必须指定alpha参数) ,显然它这里没指定。


; 转入 状态 0 (正常处理手段)
[State 0, ChangeState]
type = ChangeState
trigger1 = time = 650      ; 时止结束时触发
value = 0
ctrl = 1








; ================================
;helper用
[Statedef 1603]
type    = s
movetype= a      ; 攻击状态
physics = s
ctrl = 0
anim = 9999       ; 无攻击,无受击框,的透明动画。一般特殊用途才会使用。

[State 0, SprPriority]            ;  图层5
type = SprPriority
trigger1 = 1
value = 5

[State 0, AssertSpecial]
type = AssertSpecial
trigger1 = 1
flag = noshadow                ; 无阴影

[State 0, Destroyself]
type = Destroyself
trigger1 = time = 250         ; 250帧后消除


; 以上那段helper代码,


===================================

以上就是用到的演出代码,注释我也写的非常详细了。


总体结构是:

光环作为背景,人物表演结束后,就是一大堆explod出现的时候。

而立绘(无渐变)会存在很长一段时间。

“有渐变的立绘”出现在“无渐变的立绘”上面(图层优先级决定的)

从而覆盖了 “无渐变的立绘”,所以 “无渐变的立绘”即使不消失,也无所谓,

因为看不到。


时钟 和 指针 也是这个道理,都在 立绘(无渐变)的上层。



实在有些不明白的地方,请翻阅 Mugen 1.0 rc8 官方教程翻译。


这段可以学习学习,对于以后自己写演出是很有帮助的。


~Fin~

2015.07.09

yui








 
评论
热度(1)
 
回到顶部