MUGEN記述/アラド戦記キャラクター記述例:ハイパーアーマー Ver1.1
汎用型アーマー式ヘルパー記述を使っているキャラに、オンラインゲーム「アラド戦記」の
アーマー用エフェクトを再現させるための記述変更手順です。
~ ~ ~
・アラド戦記のハイパーアーマー
画像を参照した方が分かりやすいと思いますが、アーマー発動時にキャラより大きい画像が
時間経過と共にキャラと同じくらいの大きさまで収縮していき、最終的にはキャラを縁取る
ようにして赤と黄色に点滅します。
アーマー動作実行中に攻撃を受けた場合、アーマーエフェクトの点滅が一時的に早くなります。
・変更手順
‐鏤?道襯好董璽函Statedef -2)にある以下のアーマー用記述を削除してください。
[State -2, アーマー受けした時の点滅]
type = PalFX
trigger1 = NumHelper(9000)
trigger1 = Helper(9000),GetHitVar(damage)
time = 5
add = 256,10,10
▲◆璽沺璽悒襯僉璽好董璽函StateDef 9000)を、2つの記述を残して以下の物に変更してください。
;-------------------------------------------------------------------------------
[Statedef 9000]; アーマー判定ヘルパー
;-------------------------------------------------------------------------------
type = A
movetype = I
physics = N
sprpriority = 0
[State 9000, 0/CHs]; 不具合対策
type = ChangeState
trigger1 = !IsHelper
value = 0
ctrl = 1
[State 9000, 0/Ass]; 開始時だけ透明/親とアニメが違っていたら透明
type = AssertSpecial
trigger1 = Time = 0 || Anim != Parent,Anim
flag = Invisible
[State 9000, 0/NHB]; 開始時だけ無敵(重複被弾防止)
type = NotHitBy
trigger1 = Time = 0
value = SCA
time = 1
[State 9000, -1/NHB]; 投げ無敵
type = NotHitBy
trigger1 = 1
value2 = ,AT
time = 2
[State 9000, -1/Tra]; 透過処理
type = Trans
trigger1 = 1
trans = addalpha
alpha = 256,130
[State 9000, -1/Ass]; 影消し
type = AssertSpecial
trigger1 = 1
flag = NoShadow
[State 9000, -1/Pos]; 本体に追従
type = BindToParent
trigger1 = 1
time = 1
facing = 1
pos = 0,0
[State 9000, -1/CHa]; 判定を揃える
type = ChangeAnim
trigger1 = SelfAnimExist(Parent,Anim)
value = Parent,Anim
elem = Parent,AnimElemNo(0)
[State 9000, -1/Var]; アーマーエフェクト用の拡縮変数
type = VarAdd
trigger1 = fvar(0) < 30
fvar(0) = 3
[State 9000, -1/Agl]; アーマーエフェクト用の拡縮
type = AngleDraw
trigger1 = 1
scale = (134-fvar(0))*0.01,(132-fvar(0))*0.01
[State 9000, -1/Var]; アーマーエフェクト発光用の被弾変数
type = VarSet
trigger1 = 1
fvar(1) = IfElse(GetHitVar(damage),1,IfElse(Time<20,fvar(1),0))
[State 9000, -1/Pal]; アーマーエフェクト発光:黄
type = PalFX
trigger1 = fvar(1) = 0 && Time%20 = 0
trigger2 = fvar(1) = 1 && Time%4 = 0
time = IfElse(fvar(1)=1,2,10)
add = 256,256,0
mul = 256,256,0
[State 9000, -1/Pal]; アーマーエフェクト発光:赤
type = PalFX
trigger1 = fvar(1) = 0 && Time%20 = 10
trigger2 = fvar(1) = 1 && Time%4 = 2
time = IfElse(fvar(1)=1,2,10)
add = 256,0,0
mul = 256,0,0
[State 9000, -1/HOR]; 打撃/飛び道具を受けたらステートを繰り返す
(これは以前の物と同じです。変更不要)
[State 9000, -1/Ds]; 本体がアーマーパートを過ぎたら消滅
(これも以前の物と同じです。変更不要)
;-------------------------------------------------------------ここまで
今回はFVar(0)とFVar(1)の、2つの変数を使用しています。
これでアラド戦記風のアーマーエフェクトになるはずです。
・補足
エフェクトはキャラの後ろにあるヘルパーを変化させて表示させているため、
キャラ本体とヘルパーの間に別の画像が入ってしまうこともあります。これは表示優先度の問題。
同じく表示優先度の問題ですが、キャラ本体よりアーマーヘルパーの方が手前に表示される
ケースも目撃したので、その際はヘルパーの表示優先度(sprpriority)を下げて調整してください。
~ ~ ~
Ver1.0 記述公開開始
Ver1.1 記述改良
アーマー用エフェクトを再現させるための記述変更手順です。
~ ~ ~
・アラド戦記のハイパーアーマー
画像を参照した方が分かりやすいと思いますが、アーマー発動時にキャラより大きい画像が
時間経過と共にキャラと同じくらいの大きさまで収縮していき、最終的にはキャラを縁取る
ようにして赤と黄色に点滅します。
アーマー動作実行中に攻撃を受けた場合、アーマーエフェクトの点滅が一時的に早くなります。
・変更手順
‐鏤?道襯好董璽函Statedef -2)にある以下のアーマー用記述を削除してください。
[State -2, アーマー受けした時の点滅]
type = PalFX
trigger1 = NumHelper(9000)
trigger1 = Helper(9000),GetHitVar(damage)
time = 5
add = 256,10,10
▲◆璽沺璽悒襯僉璽好董璽函StateDef 9000)を、2つの記述を残して以下の物に変更してください。
;-------------------------------------------------------------------------------
[Statedef 9000]; アーマー判定ヘルパー
;-------------------------------------------------------------------------------
type = A
movetype = I
physics = N
sprpriority = 0
[State 9000, 0/CHs]; 不具合対策
type = ChangeState
trigger1 = !IsHelper
value = 0
ctrl = 1
[State 9000, 0/Ass]; 開始時だけ透明/親とアニメが違っていたら透明
type = AssertSpecial
trigger1 = Time = 0 || Anim != Parent,Anim
flag = Invisible
[State 9000, 0/NHB]; 開始時だけ無敵(重複被弾防止)
type = NotHitBy
trigger1 = Time = 0
value = SCA
time = 1
[State 9000, -1/NHB]; 投げ無敵
type = NotHitBy
trigger1 = 1
value2 = ,AT
time = 2
[State 9000, -1/Tra]; 透過処理
type = Trans
trigger1 = 1
trans = addalpha
alpha = 256,130
[State 9000, -1/Ass]; 影消し
type = AssertSpecial
trigger1 = 1
flag = NoShadow
[State 9000, -1/Pos]; 本体に追従
type = BindToParent
trigger1 = 1
time = 1
facing = 1
pos = 0,0
[State 9000, -1/CHa]; 判定を揃える
type = ChangeAnim
trigger1 = SelfAnimExist(Parent,Anim)
value = Parent,Anim
elem = Parent,AnimElemNo(0)
[State 9000, -1/Var]; アーマーエフェクト用の拡縮変数
type = VarAdd
trigger1 = fvar(0) < 30
fvar(0) = 3
[State 9000, -1/Agl]; アーマーエフェクト用の拡縮
type = AngleDraw
trigger1 = 1
scale = (134-fvar(0))*0.01,(132-fvar(0))*0.01
[State 9000, -1/Var]; アーマーエフェクト発光用の被弾変数
type = VarSet
trigger1 = 1
fvar(1) = IfElse(GetHitVar(damage),1,IfElse(Time<20,fvar(1),0))
[State 9000, -1/Pal]; アーマーエフェクト発光:黄
type = PalFX
trigger1 = fvar(1) = 0 && Time%20 = 0
trigger2 = fvar(1) = 1 && Time%4 = 0
time = IfElse(fvar(1)=1,2,10)
add = 256,256,0
mul = 256,256,0
[State 9000, -1/Pal]; アーマーエフェクト発光:赤
type = PalFX
trigger1 = fvar(1) = 0 && Time%20 = 10
trigger2 = fvar(1) = 1 && Time%4 = 2
time = IfElse(fvar(1)=1,2,10)
add = 256,0,0
mul = 256,0,0
[State 9000, -1/HOR]; 打撃/飛び道具を受けたらステートを繰り返す
(これは以前の物と同じです。変更不要)
[State 9000, -1/Ds]; 本体がアーマーパートを過ぎたら消滅
(これも以前の物と同じです。変更不要)
;-------------------------------------------------------------ここまで
今回はFVar(0)とFVar(1)の、2つの変数を使用しています。
これでアラド戦記風のアーマーエフェクトになるはずです。
・補足
エフェクトはキャラの後ろにあるヘルパーを変化させて表示させているため、
キャラ本体とヘルパーの間に別の画像が入ってしまうこともあります。これは表示優先度の問題。
同じく表示優先度の問題ですが、キャラ本体よりアーマーヘルパーの方が手前に表示される
ケースも目撃したので、その際はヘルパーの表示優先度(sprpriority)を下げて調整してください。
~ ~ ~
Ver1.0 記述公開開始
Ver1.1 記述改良