Site search
2009年7月2日木曜日
風速計のスクリプト
今回は風速計(風力計?)って感じのスクリプトです。矢の部分が風上を向いて、下の風車の部分がクルクル回ります。。。まあ簡単なスクリプトなんですが^^;
風見鶏みたいに風の方向を向くオブジェクトと、風車みたいに風速に応じて回転するオブジェクトの2つで構成しました。
どちらも回転して向きが変わったとき位置がずれないように、オブジェクトのX,Y方向の重心がポールの中心に来るように作ってくださいね。
風の方角を向く矢の部分です。風向きって結構変化が激しいのでタイマー間隔短めにしてあります。
続いて風車の部分です。
風見鶏みたいに風の方向を向くオブジェクトと、風車みたいに風速に応じて回転するオブジェクトの2つで構成しました。
どちらも回転して向きが変わったとき位置がずれないように、オブジェクトのX,Y方向の重心がポールの中心に来るように作ってくださいね。
風の方角を向く矢の部分です。風向きって結構変化が激しいのでタイマー間隔短めにしてあります。
// 風上を向く
default
{
state_entry()
{
llSetTimerEvent(0.05); // タイマー設定
}
timer()
{
vector v=llWind(ZERO_VECTOR); // 風の向き、速さ
float f=llAtan2(-v.y,-v.x); // 風上の方角を計算
llSetRot(llEuler2Rot(<0,0,f>)); // オブジェクトを風上に向ける
llSetText((string)llVecMag(v)+"m/sec",<0,1,1>,1); // 風速をフローティングテキストで表示
}
}
続いて風車の部分です。
// 風力に応じて回転
default
{
state_entry()
{
llSetTimerEvent(0.1); // タイマー設定
}
timer()
{
float f=llVecMag(llWind(ZERO_VECTOR)); // 風速
llTargetOmega(<0,0,f>,PI,1);
}
}
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿