2007年04月28日
太陽と時の刻み
今日はNitaroさんとParticleでアレを作って遊んでいました。アレのようにゆらゆらと、というのはなかなかに難しく、移動すると点在してしまうのが残念。でも夜間限定で左肩に乗せておくことに。
ParticleについてはNitaroさんのBlogの方を参照してください。つか、llParticleSystemに設定する数値が多すぎて書くのが面倒です。Particleを消すのは簡単なのにね。
Particleの解説は彼に譲るとして、夜間限定というお話をば。
Second Life内での時間(実時間ではなく)の取得はllGetTimeOfDayという関数ですが、単に昼か夜かを調べるのならllGetSunDirectionで太陽の位置、つまりz軸の数値を得て0より小さければ夜、大きければ昼と判断できます。lslWikiの解説ページにあるサンプルがとても分かりやすいので、そちらを読んだほうが理解は早いでしょう。
その中にllSetTimerEventという関数があります。指定時間(秒)毎にイベントのtimerを実行するわけですが、他のタスクが実行中だとtimer内で記述したタスクはキャンセルされるので注意してください。指定秒毎のtimer実行を停止するには
llSetTimerEvent(0) ;
と記述します。そんなわけで5分か10分毎にllGetSunDirectionで昼か夜かを調べ、夜になったのにアレが出てなかったらParticleを出し、昼になったのにアレが出てたらParticleを消す、という動作をさせるわけです。
ええ、if文重ねすぎて正常に実行されてませんでしたともよ。
ちなみに指定秒毎に順番に○○させていく、というときはllSleepを使います。指定した秒数だけ一時的にそこで実行を停止して、過ぎたら次の行を実行という感じ。llSetTimerEventを書いてもダメです(w
ParticleについてはNitaroさんのBlogの方を参照してください。つか、llParticleSystemに設定する数値が多すぎて書くのが面倒です。Particleを消すのは簡単なのにね。
Particleの解説は彼に譲るとして、夜間限定というお話をば。
Second Life内での時間(実時間ではなく)の取得はllGetTimeOfDayという関数ですが、単に昼か夜かを調べるのならllGetSunDirectionで太陽の位置、つまりz軸の数値を得て0より小さければ夜、大きければ昼と判断できます。lslWikiの解説ページにあるサンプルがとても分かりやすいので、そちらを読んだほうが理解は早いでしょう。
その中にllSetTimerEventという関数があります。指定時間(秒)毎にイベントのtimerを実行するわけですが、他のタスクが実行中だとtimer内で記述したタスクはキャンセルされるので注意してください。指定秒毎のtimer実行を停止するには
llSetTimerEvent(0) ;
と記述します。そんなわけで5分か10分毎にllGetSunDirectionで昼か夜かを調べ、夜になったのにアレが出てなかったらParticleを出し、昼になったのにアレが出てたらParticleを消す、という動作をさせるわけです。
ええ、if文重ねすぎて正常に実行されてませんでしたともよ。
ちなみに指定秒毎に順番に○○させていく、というときはllSleepを使います。指定した秒数だけ一時的にそこで実行を停止して、過ぎたら次の行を実行という感じ。llSetTimerEventを書いてもダメです(w
Posted by teess at 08:14│Comments(0)
│スクリプト