ヘリの改造(2)スクリ構成
ヘリの改造(1)の続きです。非物理のヘリコプター各プリムに入っているスクリプトとその働きを列記します。
ルート・プリム(Base)内のスクリプト
NonPhysicsHelicopter - 動きを制御するエンジン部分、メイン・スクリプトです。
sitpose - アバターの座る位置や固定カメラ、アニメーションを司るスクリプトです。座る位置、固定カメラ位置はノートカード SITCONFIG に記述します。スクリプトの変更は必要ありません。アニメはプリム内にあるものを自動的に採用します。プリム内にはアニメを一つだけ入れてください。
FollowCamera - アバターを追いかける Follow Cameraの設定はこちらのスクリプトで指定します。固定カメラの位置指定は SITCONFIG でと、それぞれ別になります。
messenger - パイロットにInstantMessageを送るとメイン・スクリプトが一時停止しますので、それを避けるために、その仕事だけをこのスクリプトが担当します。変更の必要はありません。
WaterSplash - 水中に入ったときに水しぶきを上げるスクリプト。水しぶきのテクスチャは goo です。「バシャーン」という音は、このスクリプト冒頭で指定します。
AutoReturn - 乗物を乗り捨てて一定時間経つと自動的に出発地点に戻ります。この機能が必要なければ取り除いてください。待ち時間はスクリプト冒頭で指定できます。
main propella内のスクリプト
screw texture rotator - プロペラは薄い円盤にプロペラの形をテクスチャで貼ったもの。このスクリプトはこのテクスチャを回転させます。
プロペラが1プリムの場合はテクスチャを回転させるのではなくプリムを回転させることができます。その場合は次のスクリプトに変更してください。
string KEYWORD = "engine";
vector AXIS = <0.0, 0.0, -1.0>;
integer INITIAL_RPS = 0;
float TIME_LAG = 1.0;
float last_omega = 0.0;
run(integer speed)
{
float w = 2.0*PI*(float)speed;
llTargetOmega(AXIS, (0.3*w + 0.7*last_omega), 1.0);
llSleep(TIME_LAG);
if (speed)
{
llTargetOmega(AXIS, w, 1.0);
}
else llTargetOmega(AXIS, 0.0, 0.0);
last_omega = w;
}
default
{
state_entry()
{
run(INITIAL_RPS);
}
link_message(integer sender, integer num, string text, key id)
{
if ( text == KEYWORD ) run(num);
}
}
rear propella
main propella と同じスクリプトが入っています。プリムを回転させる場合は、さきに示したスクリプトのうち冒頭部分にある AXIS を下記のように回転軸をY軸に変更したものを入れてください。
vector AXIS = <0.0, 1.0, 0.0>;
front seat, rear seat right, rear seat left
それぞれに sitpose と SITCONFIG がアニメとともに、また FollowCamera が入っています。
light
LightDimmerNoTouch - ライトを点滅します。
Edit - Delete