ミス記述(11/15 追記)

2016.10.25 22:05|スマブラX改造 PSA参考
最近気付いたことですが、

Set Loop: Infinite
  If: On Ground,
    Set Aerial/Onstage State: Can't drop off side of stage
    Set Air/Ground: On Ground
  Else:
    Set Aerial/Onstage State: In Air; Can leave stage vertically
    Set Air/Ground: In Air
  End If:
  Loop Rest:
Execute Loop:

このような記述をよく書いていますが、実はこれでは正常な動作をしません。

If: On Ground,
  Set Aerial/Onstage State: Can't drop off side of stage
  Set Air/Ground: On Ground
Else:
  Set Aerial/Onstage State: In Air; Can leave stage vertically
  Set Air/Ground: In Air
End If:

と動作自体は同じになってしまいます。

Set Loop: Infinite
  If: On Ground,
    Set Aerial/Onstage State: Can't drop off side of stage
    Set Air/Ground: On Ground
    Subactions 02: In Air,
  Else:
    Set Aerial/Onstage State: In Air; Can leave stage vertically
    Set Air/Ground: In Air
    Subactions 02: On Ground,
  End If:
  Loop Rest:
Execute Loop:

このように書かないと、正常に動作しないようです。
Loop Restは無限ループさせるときに処理落ちフリーズを防ぐためのものではなく、Synchronous Timerの代わりでもないのです。

日本語に変換すると、
無限ループ開始
  地上にいる場合
    地上にいてステージ端から落ちないようにする
    状態を地上にして位置を固定する
    空中に移動したら「条件を達成したら次へ」の所まで進む
  地上にいない場合
    状態を空中にして落ちるようにする
    状態を空中にして左右に動けるように、重力をかけて落ちるようにする
    地上に移動したら「条件を達成したら次へ」の所まで進む
  Ifブロック終了
  条件を達成したら次へ (この場合は無限ループの開始点に移動)
ループ終点

といったところでしょうか。
無限ループでフリーズしないのは、条件が指定されていない場合は次に進まないからだと思われます。
スーパーターボ系キャラで使っていましたが、アクションを切り替えるまでが短いため気付きませんでした...

11/15 追記:
Subactions 02 (04020100) などは、複数入れると「Or(または)」の条件として機能します。
追加条件にしたい場合はExtra Subaction Change Requirement (04030100) が使えます。
スポンサーサイト



プロフィール

ICLPX

Author:ICLPX
主にスマブラXの改造をやっています。
更新ペースはその時によってバラバラです。
質問などがあれば気軽に書き込んでください。
かなり過去に書いた記事も更新することがあります。

最新記事

最新コメント

月別アーカイブ

カテゴリ

検索フォーム

RSSリンクの表示

リンク

ブロとも申請フォーム

この人とブロともになる

QRコード

QR