太陽の位置によって明るくなるライト(llGetSunDirection,llSetPrimitiveParams関数)
下記のスクリプトでは、右クリックして表示されるパイメニューの「Touch」を選ぶと
太陽の位置によってオブジェクトが明るくなります。
尚、明るくというのは、オブジェクトの簡単効果設定ページで照会した「明るさ全開」の設定をする状態のことです。
米国時間で太陽が昇っているとき(昼間)は明るくならず、太陽が沈んでいる時(夜)の場合は明るくなります。
<昼にTouchした場合>
<夜にTouchした場合>
default
{ touch_start(integer total_number) { vector sun = llGetSunDirection(); if (sun.z <= 0) { llSay(0, "It's nighttime."); llSetPrimitiveParams([PRIM_FULLBRIGHT,ALL_SIDES,TRUE]); }else { llSay(0, "It's daytime."); llSetPrimitiveParams([PRIM_FULLBRIGHT,ALL_SIDES,FALSE]); } } } |
llGetSunDirection関数(太陽の位置をvector型で取得します。) |
llSetPrimitiveParams(プリムのあらゆる設定を変更できます。)
一番目のパラメータ : プリムフラグ(この例の場合はPRIM_FULLBRIGHT=明るさ) PRIM_BUMP_SHINY テクスチャ輝き設定 PRIM_COLOR 色 PRIM_FLEXIBLE フレキシブル PRIM_FULLBRIGHT 明るさ全開 PRIM_MATERIAL 素材 PRIM_PHANTOM ファントム PRIM_PHYSICS 物理 PRIM_POINT_LIGHT 光 PRIM_POSITION 位置 PRIM_ROTATION 回転(度) PRIM_SIZE サイズ PRIM_TEMP_ON_REZ 一時的表示設定 PRIM_TYPE 建造物ブロック・タイプ PRIM_TEXGEN テクスチャマッピング設定 PRIM_TEXTURE テクスチャ 二番目のパラメータ(注1) : 明るさを設定するオブジェクトの面 三番目のパラメータ(注1): TRUE=明るい、FALSE=明るくない プリムフラグ(PRIM_XXXX)によって、二番目以降のパラメータの数や設定値は変わります!!! |
(参考)
設定で太陽の位置を調整してもllGetSunDirectionで取得する値は変わりません。
実際の米国時間がベースとなっています。
また、llSetPrimitiveParams関数はプリムの色々な設定値を変えることができますが、
コンマ2秒の遅れが生じるらしいです。
色(llSetColor)や回転(llSetRot)などもっとシンプルな関数が用意されている場合はそちらを使うことをおすすめします。
パーティクルのllParticleSystem関数と同じように、パラメータを[]括弧の中に複数設定することができます。
この関数はいろいろなことができて大変便利そうですが、、、パラメータの数や設定値がわかりにくいっ!!!
なので、もっと丁寧な説明を後日書きたいと思っています・・・もうちょっとまっててください。