Set Orbital::OwnXy


ASTER::ACTION::ObjectControl::MOTION::Orbital::OwnXy

オブジェクトインスタンスをモーションコントローラーに Orbital Motion :: Own Xy として登録。

  • 自座標を周回の中心に設定して円周状に移動します。

  • ownXy に後からターゲットを与えると TargetXy 動作になります。


  1. スタートアップ角度

  2. 中心点からのオフセット値

  3. Orbital 専用スリープ動作

このモーションテンプレートは上記三つのオプション設定を含みます。 スリープは指定角度に到達した時点でスリープ・トリガーが発動する、Orbital 専用仕様です。


パラメータ.1

オブジェクト・インスタンスを選択。コントローラにはアクティブ ( スプライト ) のみ登録可能です。

Description of the image

アクティブ以外のオブジェクトタイプを指定した場合、イベントからアクション実行時にエラーが表示され、登録処理を中止します。


パラメータ.2

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

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

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

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

"test"

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

""

パラメータ.3

12 個の個別パラメータをへ文字列化してコントローラへ一括送信します。

"125, 125, +1,   false,   0, 45,  0,0,   false, 30, -1, 45"
実際の動作を見る..

Minion Minion

番号 略語 データ型 説明
1 Rad.1 125 unsigned int 半径1 (ピクセル)
2 Rad.2 125 unsigned int 半径2 (ピクセル)
3 ω +1.0 Float 角速度
4 Stop on Start Flag false Boolean 停止状態で動作を開始 (true: 起動時に停止, false: 停止しない)
5 Setup ∠ 0 int 開始角度
6 Step ∠ 30 int ステップ角度
7 ofst x 0 int オフセット x 値
8 ofst y 0 int オフセット y 値
9 Start with Slp false Boolean 動作開始時にスリープを開始する (true: する, false: しない)
10 Time of Slp 30 unsigned int スリープ用、フレームタイム
11 Rept -1 int スリープの繰り返し回数(スリープ不要なら 0 を入力)
12 Slp ∠ 45 unsigned int スリープトリガー角
Radius »

Radius ( unsigned int )

周回動作の半径を符号なし整数で設定します。単位は pixel です。

「楕円軌道」に対応するため Radius.1 と Radius.2 で縦と横、半径の値を個別設定できます。

Angular Velocity »

Angular Velocity ( float )

角速度を符号付き浮動小数点数で指定します。マイナス値の場合は右回り、プラス値の場合は左回りです。

ベータ版ではパラメータの数値は整数のみでしたが正式版では浮動小数点数に対応しています。

角速度は角度単位の移動量です。値が大きいほど速く動きます。角度は 360 度で一周を終え、値は 0359 となります。

周回運動における角速度 (ω) と半径 (r) は、直線換算の移動量(直線速度 = v)に関連しています。同じ角速度(ω)でも、半径(r)が小さいほど直線速度(v)は小さくなり、ゆっくり動きます。一方、半径(r)が大きい場合、直線速度(v)は大きくなり、素早く動きます。

Stop on Start Flag »

Stop on Start Flag ( boolean )

動作開始時の挙動を真偽値で指定します。Stop 命令を有効化した状態で動作開始するか否かの設定。

  • true の場合、周回動作を開始時、停止命令が有効化される、動かない。

  • false の場合、周回動作を開始時、停止せず、動き出す。

true を指定して動作停止状態にした場合、Stop 命令を解除する toogle Stop 命令を追加で発行して動作を再開できます。

Setup Angle »

Setup Angle ( int )

周回動作開始時の角度を指定します。0359 の数値、反時計回り、マイナス値も指定可能です。

後述する Step Angle 値を利用すると、開始角から円周状に一定の角度でインスタンスを均等配置できます。

Minion Minion

上の画像では Starting Angle を 0 指定、Step Angle を 30 とし 7 個のインスタンスを半円状に配置しました。

Step Angle »

Step Angle ( int )

前述の開始角度と密接に関連するパラメータです。インスタンスを円周上に配置するためのステップ角度を指定します。

開始角度で指定された値に、ステップ角度と処理順番号で乗算した値を加算して初期角度を求めます。

初期角度 = 開始角度 + ( ステップ角度 * 処理順番号 )

ステップ角が 30 、インスタンス数が 7 、開始角 が 0 の場合の計算は以下の通りです:

  • instance[0] = ( 0 + ( 30 * 0 ) ); » 0 degree
  • instance[1] = ( 0 + ( 30 * 1 ) ); » 30 degree
  • instance[6] = ( 0 + ( 30 * 6 ) ); » 180 degree
Offset X & Y »

Offset X & Y ( int )

周回運動の中心座標からの距離をオフセット値として設定します。オフセット値が 0 以外の場合、新たな周回の中心点は、現中心座標にオフセット値を加算した値で求められます。

Start with Sleep Flag »

Start with Sleep Flag ( boolean )

モーション開始時に「スリープを適用して動作開始するか、適用せず動作開始するか」を決定するフラグです。

スリープを使った一時停止機能をパラメータから完全に無効化する場合、後述する repetation 値を 0 に設定してください。

Orbital のスリープは Orbital 専用の角移動単位仕様になっており、汎用のスリープ命令とは互換性がありません。また、Orbital 専用のスリープ命令を後から追加する命令も実装されていない点に注意してください。 ASTER Version1.0.0

Frame Time of Sleep »

Frame Time of Sleep ( unsigned int )

これはアプリケーションの動作設定に依存するパラメータで、一時停止状態を継続する時間を指定します。時間の単位はアプリケーション・フレームタイム(FPS)です。

例えば、アプリケーションが一秒間に 60 回描画を更新する 60 FPS 動作設定の場合、60 という値は約一秒に相当します。Frame Time of Sleep の値が 60 に設定された場合、オブジェクトインスタンスも約一秒間、一時停止した状態になります。

Repetition Number »

Repetition Number ( int )

スリープ (動作の一時停止) 解除後、動作再開し再度スリープに入る回数を指定します。値には -1 から 0 以上の符号付整数を利用します。

スリープ機能を使わない場合、Repetition 値に 0 を代入してください。スリープ命令は実行と解除を繰り返す設計になっており、繰り返し回数を 0 にするとスリープ命令は無効化されます。

Repetition 値はゼロ以上の数値を代入された場合、スリープが解除される毎に 1 減算されます。最終的に Repetition 値が 0 になった時点でスリープ命令の繰り返しが終了します。

マイナス値を代入した場合、永久ループ指定となりスリープ解除、動作再開、スリープ状態を無限回繰り返し実行します。

Sleep Trigger Angle »

Sleep Trigger Angle ( int )

Orbital は円周運動なので、他のモーションとは異なり移動は角速度 (Angular Velocity) です。Orbital 専用のスリープ命令はトリガーも角度 (Trigger Angle) で指定するようになっています。

Trigger Angle は符号無し整数 (マイナス値は無効) を使用し、Angular Velocity の絶対値を使って値が 0 になるまで 1 ずつ減算を繰り返します。

Trigger Angle 値がゼロになった時点で指定角度に到達と判断され、スリープ命令の実行、インスタンスを指定されたフレーム時間一時停止状態にします。


その他、注意点


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

仕様上の登録可能数

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