LSLライトスイッチスクリプト:タッチでランプのオン・オフ
Second Lifeのランプ、キャンドル、電球に使える無料LSLライトスクリプト。タッチで実際のライト、グロー、フルブライトを切り替え。色と範囲も設定可能。
どんなランプ、電球、キャンドル、ネオンサインでも、実際に光るアイテムに変えられます。タッチすると、このライトスイッチスクリプトが選んだ面に本物のSecond Lifeのライト、柔らかなグロー、フルブライトを点けます。もう一度タッチすると、すべて消えます。
// Light Switch - free LSL script from WhatSL (https://whatsl.com/scripts/lsl-light-switch-script)
// Free to use, change and put in your own creations, also ones you sell.
//
// Put this script in a lamp, bulb or candle. Touch to turn the light on and off.
// The prim gives real light, and can glow and be full bright while it is on.
vector LIGHT_COLOR = <1.0, 0.9, 0.7>; // warm white
float LIGHT_INTENSITY = 1.0; // 0.0 to 1.0
float LIGHT_RADIUS = 10.0; // metres, up to 20.0
float LIGHT_FALLOFF = 0.75; // 0.0 to 2.0
float GLOW_AMOUNT = 0.1; // 0.0 = no glow
integer USE_FULLBRIGHT = TRUE;
integer LIGHT_FACE = ALL_SIDES; // the face that glows, or ALL_SIDES
integer START_ON = FALSE;
integer gOn = FALSE;
setLight(integer on)
{
float glow = 0.0;
if (on) glow = GLOW_AMOUNT;
llSetLinkPrimitiveParamsFast(LINK_THIS, [
PRIM_POINT_LIGHT, on, LIGHT_COLOR, LIGHT_INTENSITY, LIGHT_RADIUS, LIGHT_FALLOFF,
PRIM_FULLBRIGHT, LIGHT_FACE, on && USE_FULLBRIGHT,
PRIM_GLOW, LIGHT_FACE, glow
]);
gOn = on;
}
default
{
state_entry()
{
setLight(START_ON);
}
touch_start(integer total)
{
setLight(!gOn);
}
}
自由に使用・改変でき、販売する作品にも組み込めます。
設定方法
- スクリプトをランプのシェードまたは電球のプリムに入れて保存します。
- ランプをタッチしてオン・オフを切り替えます。
- 色、明るさ、範囲を部屋に合わせて変更します。
設定項目
- LIGHT_COLOR: ライトの色。<1.0, 0.9, 0.7>は温かみのある白、<0.7, 0.8, 1.0>は涼しげな白です。
- LIGHT_INTENSITY、LIGHT_RADIUS、LIGHT_FALLOFF: ライトの強さ、届く距離、減衰の速さです。
- GLOW_AMOUNT: 点灯している面の柔らかなグローです。0.0にするとグローが消えます。
- USE_FULLBRIGHT: 夜でも点灯している面を明るく見せます。
- LIGHT_FACE: 光る面を指定します(例えば電球だけ)。ALL_SIDESにすると全面が光ります。
- START_ON: スクリプト開始時にライトを点けておくかどうかです。
ヒント
- 訪問者がライトそのものを見るには、グラフィック設定でローカルライトを有効にしている必要があります。グローとフルブライトは表示されます。
- ライトが近くに多く集まると、ビューアーが重くなることがあります。小さなライトを多数置くより、強いライトを少数使うのがおすすめです。
よくある質問
壁にライトが映らないのはなぜですか?
ビューアーのグラフィック設定でローカルライトが制限されている可能性があります。グラフィック品質を上げるか、ローカルライトを許可してください。また、LIGHT_RADIUSが壁まで届いているか確認してください。
1つのスイッチで複数のランプを操作できますか?
このスクリプトは自身のプリムだけを操作します。複数のランプを操作するには、スイッチからllMessageLinked(リンク時)またはllRegionSay(非リンク時)でメッセージを送り、各ランプがそれを受け取るようにします。
夜になったら自動で点くようにできますか?
はい。タイマー内でllGetSunDirectionを使って太陽の位置を確認し、太陽が沈んだらライトを切り替えます。