MoveTowards: Swap.EPs


ASTER::ACTION::MotionControl::MoveTowards: Pair & Swap XY Positions (Group A-B)

群.A」 と 「群.B」 として選択順に基づきペアを作り、時間内にインスタンスの位置を入れ替え

“MoveTowards: SwapEPs” は mvt.Target 及び mvt.Pursuer としてそれぞれ別々に選択されたインスタンスを選択順序に基づき 1 対 1 のペアを作り、ペアとなったインスタンス同士の位置を指定時間内に入れ替えます。

類似機能に MoveTowards: SwapTgt があり、SwapTgt は選択手順や選択数を簡略化した機能です。


機能 ペア化の対象 動作内容
SwapTgt 同じグループ (mvt.Target) 選択順に基づいてペアを作成し、位置を入れ替え
SwapEPs 異なるグループ (mvt.Targetmvt.Pursuer) 選択順に基づいてペアを作成し、位置を入れ替え

移動が完了したらモーショングループは自動的に登録抹消されます。モーショングループが登録抹消されても mvt.Tgt あるいは mvt.Prs として選択されたインスタンスの選択情報は残っています。


利用する前に

インスタンス同士がペアを作り、時間内に互いの位置を入れ替える動作を MoveTowards: Swap と定義します。

mvt.Targetmvt.Pursuer の選択は MoveTowards 用に設計された以下ユーティリティ ( MvtUtil ) が利用できます。



mvt.Target として選択されたインスタンスの情報を JSON ヘエクスポートできます。



関連付けしたいインスタンスをキャッシュする機能: 実験的



Parameter.1

モーションコントローラへ登録するモーショングループ名を入力します。

異なるオブジェクトから作成されたインスタンスでも同じモーショングループ名でグループ化し、コントローラから管理できます。

すでにコントローラに登録済みのインスタンスを別グループ名から重複登録はできません

マルチバイト文字列 (日本語など) も利用可能ですが、実用上、アルファベット小文字で短い名前を推奨します。

"test"

アクティブオブジェクトに設定された名前をモーショングループ名として登録に利用する場合、空文字列を送信します。

""

Parameter.2

8 つのパラメータを文字列化して送信します。

"  60, false, 0,    30, -1, false, 30,    false "
argument Name type descriptions
60 timebound unsigned int 動作完了するまでの時間、Frame Time
false EvD: Motion Start Boolean Event Detection Flag (rev.1.0.5)
0 motion-type unsigned int 実装は 0 のみ ( rev.1.0.x )
30 Sleep Time unsigned int スリープで一時停止する時間、Frame Time
-1 Sleep Repetition int スリープを何回繰り返すか、-1 は無限、0 は無効化
false Sleep Begin Flag boolean 動作開始時にスリープを有効化するフラグ
30 Sleep Interval Value unsigned int 次回スリープまでの時間、Frame Time
false EvD: Motion Close Boolean Event Detection Flag (rev.1.0.5)
MoveTowards のパラメータ仕様を一部変更。rev.1.0.4 以前のパラメータが rev.1.0.5 では動きません

Time Bound

unsigned int

移動を完了するのに要する時間、アプリケーションフレームタイム。60 FPS 動作設定のアプリケーションの場合、60 は約一秒に相当する。

距離に応じた時間単位の移動量を割り出すための値、与えられた条件に応じて移動速度は速くなり遅くなります。

目標座標までの距離を測り、設定された制限時間を用いて移動量を算出する仕様なので、制限時間にマイナス値を代入できない

0 を代入した場合、動作をキャンセルする


EvD Flag: about to start moving

boolean

イベント検出フラグ: true の場合、インスタンスが動き出す直前に条件が一度だけ実行されます。


Motion Type

unsigned int

0 を代入してください。等速直線運動を選択。

MoveTowards のサブモーションタイプ設定。ASTER rev.1.0.x には 0 以外実装が無い。将来的なアップデートで対応。


Sleep Time

unsigned int

動作を一時停止する時間を設定、アプリケーションフレームタイム。60 FPS 動作設定のアプリケーションの場合、60 は約一秒に相当する。

マイナス値を代入できない。


Sleep Repetition

int

スリープが終了後、スリープを再開する回数を設定する。スリープを利用しない場合、0 を代入してください。

-1 の場合、無限ループ。


Sleep Begin Flag

boolean

MoveTowards による移動開始時にスリープ・フラグを有効化して開始するか、否かを決定するフラグ。

true の場合、まず一時停止から始まり、スリープが終了後に移動を開始する。

false の場合、移動を開始し、時間が来たら一時停止する。


Sleep Interval

unsigned int

スリープ終了後、再び一時停止するまでの時間を設定する。アプリケーションフレームタイム。

マイナス値を代入できない。


EvD Flag: The moment after stops moving

boolean

イベント検出フラグ: true の場合、インスタンスの移動が停止した直後に条件が一度だけ実行されます。



登録可能上限、予約変数について »

仕様上の登録可能数

1 つのモーショングループに登録可能なインスタンス数は最大 255 個。 モーショングループは 1 モーション・タイプにつき 255 個までグループ登録できる。

type Max Groups Max Instances (Per Group) Total Instances (Per Motion Type)
Null 255 255 255 x 255 = 65,025
Flp | Wrp 255 255 255 x 255 = 65,025
Flp | Wrp::SineWave 255 255 255 x 255 = 65,025
Orbital 255 255 255 x 255 = 65,025
MoveTowards 255 255 255 x 255 = 65,025

上記は理論値であり CF25 の処理能力を超えているため、常に最大値未満で運用することになります。

実用的には、全登録モーションの全インスタンス数が最大 100 以下での動作を想定しています。

予約変数について

予約変数としてオブジェクト・インスタンスの変数から

  1. Alt Variable[0] = Spread ID

  2. Alt Variable[1] = Motion ID

上記を利用します。

Alt Variable[0]

連番、フレームエディタ上で一番最後に作られたオブジェクトインスタンスが 0 を割り当てられ、以降 +1 ずつ増加した値が順番に各インスタンスへ割り振られます。任意の値で上書き変更しても良い、安全。

Alt Variable[1]

モーションタイプ、0 ~ 4 までの数値、登録時のモーションタイプに応じた値が代入されます。データベース検索を高速化するためのマジックナンバー。変更するとコントローラが正常に検索できなくなります、危険。

rev.0.9.x 以降、Alt Variable[1] を利用しない方法が試行されていて、今は使ってないけれど、ただし元に戻すかもしれないので Alt Variable[1] は予約変数扱いのままでお願いします。


Note

mvt.Target 及び mvt.Pursuer は選択された順番が ASTER に記録されていて、選択順でペアを作ります。

インスタンス同士でペアを作る際にペアを作れない余りが生じた場合、SwapEPs の仕様ではペアを作れなかったインスタンスの処理はスキップされます。

SwapTgt の仕様ではインスタンスを必ず 2 つ選択するため、余りは生じません。