ハイジャンプ研究室(2009/06/08 入力時間の修正忘れを修正)

一瞬↓方向入力を行った後、↑方向入力でハイジャンプを行う処理についてです。


現在、通常は以下のようなコマンド設定とステート指定がされている様です。


;ハイジャンプ
[Command]
name = "HJ"
command = $D, $U
time = 10

;ハイジャンプ
[State -1]
type = ChangeState
value = 199
trigger1 = command = "HJ"
trigger1 = statetype != A
trigger1 = ctrl

しかしこれでは、例えば「左下入れっぱなし」から「真下」または「右下」を経由してジャンプした場合、ハイジャンプが暴発してしまっていました。
これを阻止するには、「↓方向入力が一定以上押しっぱなされた場合はハイジャンプしない」という条件設定が必要になります。
そこでコマンドを以下のように設定し、


[Command];ハイジャンプ
name = "HJ"
command = ~$D, $U
time = 8;フレーム数はこの位がちょうど良さそうです

[Command];ハイジャンプ暴発阻止
name = "NHJ"
command = ~12$D, $U
time = 8

[Command];ハイジャンプ暴発阻止
name = "NHJ"
command = /$D
time = 12

さらに、ステート指定部分で


[State -1];ハイジャンプ
type = ChangeState
value = 199
trigger1 = command = "HJ"
trigger1 = command != "NHJ";不正入力排除
trigger1 = statetype != A
trigger1 = ctrl

このように、押しっぱなしからの入力コマンドを排除します。
これで、ハイジャンプがむやみに暴発する事はなくなると思います。
ちなみに、修正後のコマンドで「~」を使っているのは「↓方向を離してから↑方向を入力するまでのフレーム数」を正確に制限するためです。

ついでに、ハイジャンプ処理ステート例も置いておきます。


[Statedef 199];ハイジャンプ
type = S
physics = S
anim = 40
ctrl = 0
sprpriority = 1

[State 199, 1];掛け声を入れてみました
type = PlaySnd
trigger1 = Time = 0
value = 200,0;キャラsndに合わせて変えましょう
channel = 1;掛け声用のチャンネルに合わせてください

[State 199, 2];ジャンプ力の設定 数値はお好みでどうぞ
type = VelSet
trigger1 = AnimTime = 0
x = ifelse(command = "holdfwd",const(velocity.jump.fwd.x)*1.4,ifelse(command = "holdback",const(velocity.jump.back.x)*1.2,0))
y = const(velocity.jump.y)*1.2

[State 199, 3];残像があると格好いい これも数値はお好みで
type = afterimage
trigger1 = AnimTime = 0
time = 300;ハイジャンプの途中で切れないよう、長めに設定してます
TimeGap = 1
length = 12
palcolor = 200
palBright = 0, 20,180
palContrast = 150,220,255
palAdd = -150,-70,-50
palMul = 1, 1, 1
trans = none
[State 199, 4]
type = ChangeState
trigger1 = AnimTime = 0
value = 50
ctrl = 1

さらに、[Statedef -3]ステートで以下を設定
;残像消去
[State -3]
type = AfterImageTime
trigger1 = stateno = 52 || stateno = 154;二段ジャンプのステートなどがあれば追加してください
trigger2 = movetype = H
time = 0


MUGEN研究所へ戻る
MENUへ戻る