Horizontal:Wrap:Sinewave


ASTER::ACTION::ObjectControl::MOTION::Set Horizontal:Wrap:Sinewave

モーションテンプレート Horizontal Wrap :: Sinewave を選択、モーションコントローラにオブジェクト・インスタンスを登録

  • Wrap は指定された領域を超えた時、指定座標へワープして移動を継続する動作です。

モーション::概要

水平移動 ( Horizontal ) の場合、左端と右端の各座標に仮想壁 ( The Virtual Walls ) が設定でき、壁に当たったら進行方向と反対側の壁まで座標をワープさせ、再び進行方向側の壁へ向かって移動する、このルーチンを繰り返します。

仮想壁との衝突 ( 実際には座標通過 ) を検出した場合には即時実行条件が起動し、専用コンディションとエクスプレッションから該当インスタンスの x|y 座標や固定値を得ることができます。

移動量には浮動小数点数が設定可能になり、ASTER ベータ版では移動量の最小単位が 1 フレームタイム = 1 ピクセルでしたが、ASTER 正式版ではより詳細な動作解像度を実現します。


パラメータ.1

オブジェクト・インスタンスの選択 »

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

Description of the image

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


パラメータ.2

モーショングループ名の入力 »

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

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

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

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

"test"

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

""

パラメータ.3

8 つのパラメータをシリアライズして 1 つの文字列にまとめ送信します。

"    +1.5 ,      300,       +1.0,        0,            72,         false ,      -40 ,     1000  "
番号 略名 データ型 説明
1 +1.5 x vel float X 移動量
2 300 amp int 振幅幅 (pixel)
3 +1.0 ω float 角速度
4 0 setup ∠ int 初期設定角度
5 72 step ∠ int ステップ角度
6 false bool boolean 停止状態で開始 (true,false)
7 -40 wall-A int 仮想壁 (左端) 座標
8 1000 wall-B int 仮想壁 (右端) 座標

  • Amplitude は単位がピクセルなので整数値。(サブピクセルはサポートせず)

  • Angular Velocity (omega = ω) は浮動小数点数。

  • Setup Angle は移動開始時の角度指定。後述する Step Angle と組み合わせて利用。

  • Step Angle はオブジェクトインスタンス数に応じて初期設定角度を変更するパラメータ。

Set up Angle 値に Step Angle 値をアクションループインデックスで乗算した値を加算して初期設定角度を決定しています。

SetupAngle = SetupAngle + (StepAngle * ActionLoopIndexNumber)

インスタンスが 6 つの場合、初期設定角度 0 、ステップ角度 72 とした場合の計算例。

    SetupAngle.1 ::   0 = 0 + ( 72 * 0 );
    SetupAngle.2 ::  72 = 0 + ( 72 * 1 );
    SetupAngle.3 :: 144 = 0 + ( 72 * 2 );
    SetupAngle.4 :: 216 = 0 + ( 72 * 3 );
    SetupAngle.5 :: 288 = 0 + ( 72 * 4 );
    SetupAngle.6 :: 360 = 0 + ( 72 * 5 ); // 360 は 0 と等しい

その他、注意点

振幅幅を変更する専用命令として、GrowRadius for Sinewave が利用できます。


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

仕様上の登録可能数

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