移動技について

無敵移動技といえば例えば阿修羅閃空が有名ですね。

で、その阿修羅閃空の移動距離設定ですが

varsetを利用してcommand=”holda”などでフラグを立てさせる方法と

コマンドセット時点、statedef -1でコマンドやボタンごとに

ステートのナンバリングで管理する方法の2つがあります。

 

人操作で安定して動かしたい場合はstatedef -1で1つずつの管理がいいと思われます。

AIで動かす場合は1番目のフラグ管理による条件分岐のほうが楽です。

いっそと思って両方用意するのもいいですが、人操作用でAIも対処できるため、

人操作用さえ用意してしまえば大丈夫です。

 

ちなみにフラグ管理の場合は

フラグ当たりどう動くかを用意するだけですので手間はこちらのほうが少なく済みます。

ただし、動作が若干不安定というデメリットはあります。

同じステート内で表示アニメを変える場合

例えばストリートファイターシリーズの竜巻旋風脚などが有名でしょうか?

弱と中、強で移動距離が変わるのでそれにあわせて回る回数を増やさないといけないわけですが、

さて、どうしましょう?

 

答えは簡単で、

var変数に回る回数を代入してしまいます。

弱なら1回中なら2回、強なら3回、といった形ですね。

 

その後はStateDefで記述を組み立てて、

回転するだけのアクションナンバーを用意します。

 

例えば1205番が回るだけのアクションナンバーと想定すると

[State ]
type=varSet
trigger1=command=”x” || command=”y” || command=”z”
trigger1=!Time
value=ifElse(command=”x”,1,ifElse(command=”y”,2,3))

[State ]
type=changeAnim
trigger1=anim=1205trigger1=animTime=0
trigger1=var(0)>0;0のときで終了
value=1205

[State ]
type=varAddtrigger1=anim=1205
trigger1=!Time
var(0)=-1

これだけでいけます

簡単なハイジャンプの設定方法

大体の人はハイジャンプ用のステートを用意している

・・・はず!

 

ぱっと見は分かりやすいのですが、

個人的にはAIを作るとき面倒であるため

アプローチを変えてみよう!

 

ということでこちらの手法

 

ハイジャンプをする場合必ず2のレバーを入れるため

一瞬でも必ずしゃがみ動作が発生する

 

という方向から

 

[statedef 10]

こちらへ

[state ,hiJumpFlag-On]
type=varSet
trigger1=!time
sysVar(0)=1

こうします。

でもこれだけだと常時ハイジャンプしてしまうため、

[state ,hiJumpFlag-Off]
type=varSet
trigger1=time<5
sysVar(0)=0

timeの数値は各々自由でいいと思います。

その後はジャンプした後sysVar(0)をOffにすると

設定が終わりとなります。

当然ながらコマンドも追加する必要ありません。

簡単ですねぇ。