Skip to main content
各仮想オフセット(フレーム)のカードでは、「Outputs」欄で出力したい物理量を軸ごとにチェックします。チェックした軸だけがコードに生成され、未選択の項目の計算処理は可能な限り省略されます。

変数名の規則

生成されるコードは、オフセットカードの名前をもとにした local 変数として出力されます。命名規則は次のとおりです。
例えば rotor という名前のカードで World Pos の Y 軸を選ぶと rotor_world_y という変数になります。これらの変数は onDraw() など、同じ Lua チャンク内の他の関数からもそのまま参照できます。開発中は可読性のためにこの命名を保ちますが、Lua minifier に通せば識別子は短縮されます。

出力項目一覧

すべて Stormworks の Composite Input と同じ「右・上・前方向 (+X/+Y/+Z)」の座標系を基準にしています。ワールド座標系は左手系です。

World Pos と位置自動補完

World Pos を1つ以上選択すると、Physics Sensor の Composite Input ch1〜3(世界座標系の位置)を読み取ります。設定リファレンスの「1-3=0位置自動補完」を有効にしていると、ch1〜3 がすべて0の tick(Physics Sensor に電力が供給されていない場合など)では位置をそのまま信用せず、直近の速度を積分して補完します。

Tilt / Compass と ch15〜17直利用

そのオフセットが静的かつ回転オフセットが0(Pitch/Yaw/Roll すべて0)の場合に限り、設定リファレンスの「ch15-17直利用」を有効にすると、Tilt Z は ch15、Tilt X は ch16、Compass は ch17 から直接値を読み取り、math.atan を使った計算式を省略できます。Tilt Y は直利用の対象外で、常に姿勢行列から計算されます(Tilt Roll は Tilt X と Tilt Y から求めるため、Tilt X 側のみ直利用されます)。動的オフセットや回転がある静的オフセットでは、すべて姿勢行列から計算されます。

Local Vel / World Vel、Local Accel / World Accel の違い

linear(Local Vel)と acceleration(Local Accel)は、そのオフセット自身の回転(静的オフセットの Pitch/Yaw/Roll、または動的オフセットの回転引数)を基準にした座標系での値です。回転オフセットが0の静的オフセットでは、Physics Sensor 自体のローカル座標系(Composite Input ch7〜9・角速度由来の加速度)とそのまま一致します。 worldLinear(World Vel)と worldAcceleration(World Accel)は、Physics Sensor の姿勢行列(ch4〜6由来)で回転してワールド座標系に変換した値です。オフセット自身の回転オフセットには影響されません。 加速度(Local Accel / World Accel)は Composite Input から直接取得できないため、対応する速度成分を毎tickの差分から (今回の値 - 前回の値) * 60 として算出しています(Stormworks のマイクロコントローラーは60Hzで onTick を実行するため)。この差分計算用の変数は関数の外(チャンクスコープ)に永続的に保持されます。