【無料】光の筋【VRChatワールドギミック】
- Digital0 JPY





暗い部屋の向こうで、誰かの懐中電灯がこちらを向きます。床が照らされるより先に、薄い光の筋がすっと伸びてくるのが見えます。天井の照明は斜めに筋を落とし、仕切りの壁に当たった所で途切れます。 光の筋は、スポットライトの前へうっすらした筋を伸ばし、ポイントライトの周りにぼんやりした光の玉を出す UdonSharp スクリプトとシェーダです。灯の点け消し・明るさ・色・向きに毎フレーム合わせるので、点滅や持ち運びの仕掛けとそのまま組み合わせられます。 手に持てる懐中電灯、天井のスポットライト、吊りランプの 3 つのプレハブと、仕切りの壁がある暗い部屋の見本シーンを同梱しました。暗いワールドで、離れた人の明かりがどちらを向いているかを見せたいときに向きます。
できること
■ 前へ伸びる筋 スポットライトの向きへ円すいの筋を伸ばします。長さは灯の届く距離の 3 割、上限 3.5m です。照らされた範囲より細くして、芯のある筋に見せます。 ■ 壁で止まる 筋は灯の向きへ 1 本の線を飛ばし、壁や家具に当たった所で止めます。仕切りの向こうへ突き抜けません。止める層は自分で選べます。 ■ 灯の周りの光の玉 ポイントライトには筋の代わりに、灯の周りへぼんやりした光の玉を出します。吊りランプや、ろうそくのような周り全体を照らす明かりに使います。 ■ 灯に合わせて変わる 灯の点け消し・明るさ・色・届く距離・照らす角を毎フレーム読みます。灯が消えれば筋も消え、明るさを下げれば筋も薄くなります。灯を点滅させる仕掛けがあっても、筋の側には手を加えずに済みます。 ■ 灯の数に数えない 筋と玉は灯ではなく半透明の形です。灯の数の上限やリアルタイムの影の数には数えられません。マテリアルは全部の灯で共有したまま、色と濃さだけ灯ごとに渡します。 ■ 顔が筋に入っても白くならない 目の近く(筋 0.8m、玉 0.5m)では薄くして消します。懐中電灯を自分の顔に向けても、画面が白く塗りつぶされません。
注意
・確認したのは作者のエディタ(Unity 2022.3 + VRChat SDK3 Worlds)、ClientSim、PC VR の実機です。Quest の実機ではまだ確かめていません。確認できたら更新履歴に書きます ・筋が当たりを調べるのは中心の 1 本の線だけです。筋の端だけ壁に掛かるときなど、縁が壁を少しすり抜けて見えることがあります ・光の玉が壁や天井に食い込むと、食い込んだ所で縁が角ばって見えます。ランプは壁や天井から玉の半径以上離して吊ってください ・懐中電灯の灯は、持ち手の当たり判定より少し前に置いてください。持ち手に筋が当たって根元で止まります(同梱の懐中電灯は本体の 1cm 先に置いています)
同梱物
1. LightShaft(本体。灯 1 つに 1 つ付ける) 2. 前へ伸びる筋のシェーダ、光の玉のシェーダ 3. 設定済みのマテリアル 2 個と、筋に使う円すいの形 4. 手に持てる懐中電灯(VRC Pickup 付き)、天井のスポットライト、吊りランプのプレハブ 5. 仕切りの壁がある暗い部屋の見本シーン 6. インスペクター拡張(付けた時と値を変えた時に、筋と光の玉を作り直す) 7. README / LICENSE / CHANGELOG
動作環境
・Unity 2022.3 系 ・VRChat SDK3 Worlds(UdonSharp 同梱の版) ・PC VR 実機で動作確認済みです。Quest 実機は未検証です
導入手順
1. unitypackage を取り込む 2. Prefabs/ の 3 つのどれかをシーンに置く 自分の灯に付けるときは、スポットライトかポイントライトのオブジェクトに LightShaft を付けます。灯の子に Beam と Glow が自動でできます。懐中電灯なら lensRadius をレンズの半径に合わせてください。筋が根元ですぐ切れるときは、灯が持ち手や器具の当たり判定の中にあります。
LightShaft の設定
・source: 合わせる灯。空ならこのオブジェクトの Light ・lensRadius: 灯の位置での筋の太さ(半径)。既定 0.02m。懐中電灯のレンズの大きさです ・lengthRatio: 見える筋の長さ。灯の届く距離に対する割合。既定 0.3 ・maxLength: 見える筋の長さの上限。既定 3.5m。届く範囲いっぱいに描くと部屋全体が霞むため ・spreadRatio: 筋の広がり。照らす角に対する割合。既定 0.6。照らされた範囲より細くして芯を見せるため ・glowRatio: 光の玉の半径。灯の届く距離に対する割合。既定 0.2 ・beamStrength: 筋の濃さ。既定 0.06。上げすぎると白い円すいに見えるため、薄めにしています ・glowStrength: 光の玉の濃さ。既定 0.08 ・useLightColor: 灯の色を筋に使う。既定 ON ・followIntensity: 灯の明るさに合わせて筋を薄くする。基準は開始時の明るさ。既定 ON ・blockLayers: 筋を止める層。壁や家具の層を入れる。既定 Default
見本シーン
Scenes/LightShaft_Sample.unity を開いて再生すると、3 つの灯を見比べられます。 1. 机の上の懐中電灯: 持ち上げて振ると筋がついてくる 2. 天井のスポットライト: 斜め下を照らし、筋が仕切りの壁で止まる 3. 吊りランプ: 灯の周りの光の玉 見本シーンで変えてある値: 1. 天井のスポットライトだけ lensRadius を 0.07m にしています。照明器具の口が懐中電灯より大きいためです 2. 環境光をほぼ黒にしています。筋が見えるのは暗い所だけなので、効き目を分かりやすくするためです
利用規約
再配布・改造など全部歓迎 ・個人、商用を問わず使えます ・クレジット表記は不要です ・改造したものも、そのままのものも再配布できます(有料でもかまいません) 本アセットは現状有姿で提供します。 記載の対応バージョン以外での動作は保証しません。 サポート・アップデートの提供は実施する場合がありますが義務ではありません。不具合報告は歓迎しますが、修正対応の実施可否・時期は作者の裁量とします。 外部の素材は同梱していません。
更新履歴
1.0.0 (2026-10-11) 初版





