MoveTowards: TGTARR

ASTER::ACTION::MotionControl::MoveTowards: The mvt.Target is a JSON Array

MoveTowards: TgtArr は、配列に格納された XY 座標データを移動目標に利用する動作テンプレートです。

mvt.Pursuer として選択されたオブジェクト・インスタンスは配列に格納された XY 座標を参照し、目標地点まで移動します。

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


利用する前に:

XY 座標データを格納したJSON 配列を参照するパスを ASTER へ登録してください。

以下は XY 座標を格納した JSON 配列のサンプル:

{
    "xyCoords":[
        [100,100],
        [200,100],
        [300,100],
        [400,100]
    ]
}

MoveTowards の群.A ( mvt.Target ) に JSON 配列へのパスを指定する関数について、パスの指定には JSON Pointer を使うけれど JSON 機能ではなく、Motion Control 機能の一部です。

似たようなコンセプトの JSON 機能に「 Targeted JSON Pointer 」というものがありますが、Targeted JSON Pointer で指定されたパスは MoveTowards:TgtArr では利用できません。

function description
JSON :: JSON Pointer :: Set Targeted JSON Pointer General-Purpose Use
Motion&Control :: MvtUtil: Define an array path for MvT:TgtArr Dedicated to MoveTowards:TgtArr

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] は予約変数扱いのままでお願いします。


MoveTowards:TgtArr の動作サンプル

Minion Minion

上記動作サンプルは CF25 の Event Editor から約 7 行 で作成可能です。

Minion Minion