So-net無料ブログ作成
検索選択

再チャレンジ:デジタル風時計 [LSL]

以前、LSLの勉強デジタル時計を作ってみたもののうまくいかず断念してたんだけど、ちょっと気持ちを入れ替えて再チャレンジしてみた。
前は、lslwikiからのほとんどパクリだったので、今一度スクリプト眺めて結局全く違うスクリプトにしてみた。
とりあえず今のところは動いてるみたい。
一応、スクリーンショットを撮っておこうとパッシと撮影したら、なんと肝心の時間が撮影されない心霊写真状態に・・・。


仕方がないのでOSでキャプチャしました。

// 時計なスクリプト(置いたら1秒毎に更新、ただしhh:mm表示)

display_time()
{
//hour
integer hour = (integer)llGetGMTclock() / 3600 + 9;

if(hour > 23)
{
hour -= 24;
}
string shour = (string)hour;

//min
integer min = (integer)llGetGMTclock() % 3600 / 60;
string smin = (string)min;

//add zeros to single digit minutes/seconds
if(llStringLength(shour) == 1)
{
shour = "0" + shour;
}
if(llStringLength(smin) == 1)
{
smin = "0" + smin;
}

string time = llUnescapeURL("%E8%A9%A6%E9%A8%93%E4%B8%AD") + "\n" +

llUnescapeURL("%E5%8F%AA%E4%BB%8A%E3%81%AE%E6%97%A5%E6%9C%AC%E6%99%82%E9%96%93%E3%80%80") +

shour + ":" + smin;

llSetText(time,<1,0,0>,1.0); } default { state_entry() { display_time(); llSetTimerEvent(1); } timer() { display_time(); } }  


振り子時計を作る [LSL]

LSLの勉強がてら時計を作ろうと思い立ってから何週間が経ったんだろう。
当初はllSetTextとllGetGMTclockを組み合わせて作ろうとしてたんだけど、できたデジタル風時計は、JSTにするのにちといじったのが間違っているらしく、翌日にはいったい何時なんだという暴走ぶり。結局、またの機会に再チャレンジすることにした。

そんな中、以前見つけたIBMのCODESTATIONにWallClockというサンプル時計を発見、早速中身を確認してみた。
中身はllRotateTextureを使って、時・分・秒のオブジェクト(テクスチャ?)をそれぞれ別々に動かすような感じ。よし、それはそのままパクることにしよう。
じゃ、それをベースに振り子時計でも作ってみるか。という発想になり、試行錯誤した結果、なんとか、それらしいような振る舞いをする振り子風時計α版ができました。
なぜα版かというと、この時計、全部をリンクしちゃうと時計全体が振り子状態になる欠点が・・・。どうすりゃいいんだ(汗)


左が振り子風時計α版、右側がIBM CODESTATIONのWallClock

furiko()
{
llSetRot(llEuler2Rot(<0, 0, 50 * DEG_TO_RAD>) * llGetRot());
llSetRot(llEuler2Rot(<0, 0, -(50 * DEG_TO_RAD)>) * llGetRot());
}

default
{
state_entry()
{
furiko();
llSetTimerEvent(2);
}

timer()
{
furiko();
}
}


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。