Site search
2008年8月16日土曜日
アナログクロックのスクリプト
今回は簡単なアナログで針の動く時計のスクリプトです^^
Z軸を基準で針が動くようにしますね。文字盤はシリンダーを薄くして作ってください。長針、短針はX方向を長くしてYとZを縮めて棒のようにして、パスカットB0.125 E0.625にします。そして、文字盤を親にしてリンクさせます。
今回、針はパスカットにしましたが、プリムの中心から半分が完全になくなりますので、針もシリンダーにしてテクスチャで描いたほうが良いかもですねw
時間はllGetWallclockでPST/PDT(SL時間)にしてます。スクリプトは針の中に入れてくださいね。
角度の計算は作るときのプリムの向きの違いで、自分でも方向がよくわからなくなっちゃうことがあるので詳しい注釈は省きますね^^;;
Z軸を基準で針が動くようにしますね。文字盤はシリンダーを薄くして作ってください。長針、短針はX方向を長くしてYとZを縮めて棒のようにして、パスカットB0.125 E0.625にします。そして、文字盤を親にしてリンクさせます。
今回、針はパスカットにしましたが、プリムの中心から半分が完全になくなりますので、針もシリンダーにしてテクスチャで描いたほうが良いかもですねw
時間はllGetWallclockでPST/PDT(SL時間)にしてます。スクリプトは針の中に入れてくださいね。
// 短針用
default
{
state_entry()
{
llSetTimerEvent(0.1); // タイマー0.1秒
}
timer()
{
integer t=(integer)llGetWallclock(); // PST/PDT
integer h=t/3600; // 時
integer m=(t%3600)/60; // 分
// 短針の角度を計算して設定
llSetLocalRot(llEuler2Rot(<0,0,360-(h*30+m/2)>*DEG_TO_RAD));
}
}
// 長針用
default
{
state_entry()
{
llSetTimerEvent(0.1); // タイマー0.1秒
}
timer()
{
integer t=(integer)llGetWallclock(); // PST/PDT
integer m=(t%3600)/60; // 分
// 長針の角度を計算して設定
llSetLocalRot(llEuler2Rot(<0,0,360-m*6>*DEG_TO_RAD));
}
}
角度の計算は作るときのプリムの向きの違いで、自分でも方向がよくわからなくなっちゃうことがあるので詳しい注釈は省きますね^^;;
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿