Nasal スクリプト集

概要

rocking_nimitz.nas は空母 Nimitz のピッチ方向/ロール方向の揺れを再現する為のスクリプトです。天候にはまったく左右されませんので悪しからず。

インストール方法

添付ファイルのソース (rocking_nimitz.nas) を ~/.fgfs/Nasal/rocking_nimitz.nas として保存してください (Windows の場合は C:/Documents and Settings/<ユーザ名>/Applciation Data/flightgear.org/Nasal/rokicing_nimitz.nas)。 あとは FlightGear を起動するだけで準備完了です。特に機体/空母側の変更は必要ありません。

使用方法

特にありませんが、Nimitz を有効にしていてください。

処理概要

最大ピッチ角 (max_pitch) と 最大ロール角 (max_roll) と ピッチ周期 (pitch_interval), ロール周期 (roll_interval) とを基にして、

Nimitz のピッチ角度をピッチ周期 pitch_interval, ±最大ピッチ角 max_pitch のサインカーブで変化させます。 ロールも同様に 周期 roll_interval, 最大ピッチ ± max_roll のサインカーブで変化させます。1秒毎のタイマーで1秒後の角度を指定し、 interpolate で1秒間掛けてその角度に徐々に変化させるようにしています。

ソース

このソースは参考に表示しているものです。ダウンロードは下の添付ファイルをクリックして保存してください。

#
# rock_nimitz.nas
# simulates a brief pitching / rolling deck
#
# 2008/07/30
# by Tat Nishioka <tat dot fgmacosx at gmail dot com>

var max_pitch = 0.4;
var max_roll = 0.9;
var pitch_interval = 3;
var roll_interval = 4;

var rock_nimitz = func {
    var sec = getprop("/sim/time/elapsed-sec");
    var pitch = math.sin(sec / pitch_interval * 3.14) * max_pitch;
    var roll = math.sin(sec / roll_interval * 3.14 ) * max_roll;
    interpolate("/ai/models/carrier[0]/orientation/pitch-deg", pitch, 1);
    interpolate("/ai/models/carrier[0]/orientation/roll-deg", roll, 1);
    settimer(func { rock_nimitz(); }, 1 );
}

_setlistener("/sim/signals/fdm-initialized", func { rock_nimitz(); });

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS