【無料】こわがらせしかけ集
- Digital0 JPY








通路の先に立っていた人形が、目を離した隙に別の形へ変わっている。振り返ると、さっきより一歩近い。そういう「見ていない間に変わっていた」を作るための UdonSharp スクリプト 5 本です。 プレイヤーの顔の向きと距離を見て、視界から外れた物を入れ替える、範囲に入った瞬間に顔の正面へ出す、見ていない間だけ近付く、範囲に留まっている間にくじを引いてたまに出す、狙った場所を見続けると出す、の 5 通りが入っています。どれも 1 つのオブジェクトに付けて、出したい物を 1 個入れれば動きます。 見本シーンを同梱しました。前半で 5 本を 1 本ずつ試し、後半はその組み合わせだけで作った場面が 4 つ続きます。貼り紙を読ませている間に背後へ回す、曲がり角の先に立たせる、引き返すと通路が 4 か所変わっている、入った瞬間に 1 回出してその後はたまに出す、の 4 つです。新しいスクリプトは 1 本も使っていません。L 字に折れた 144m の通路で、区画ごとにリセットボタンが付いています。暗い地下道やトンネルのホラーワールド向けに作りました。
できること
■ 見ていない間に変化する 誰の視界にも入っていない間だけ、物が別の形に入れ替わります。同期つきなので、後から部屋に来た人にも変化した後の姿で見えます。 ■ 範囲に入った瞬間、顔の正面に出す トリガーを踏んだ瞬間、踏んだ本人の画面の正面に出します。出ている間その人を動けなくする設定もあります。 ■ 見ていない間だけ近付く 視界から外れるたびに一歩ずつ寄ってきます。見ている間は止まったままです。こちらも同期つきです。 ■ 範囲にいる間、たまに出る 範囲に留まっている間、決めた間隔でくじを引いて、当たった時だけ出します。幽霊が出た、という小ネタ向けです。 ■ 決めた場所を見続けると出す 1 番の逆で、視線を向けている時間で発動します。看板や貼り紙を読ませてから出す、といった使い方ができます。 ■ 見本シーン同梱 取り込んで再生するだけで、通路を進みながら 5 本を順に確認できます。後半には、その 5 本を組み合わせただけで作った場面が 4 つ入っています。設定値を変えて並べただけなので、インスペクターを開いて前半と見比べられます。
注意
・音は入っていません。鳴らしたい場合は自分で用意した音を入れてください ・作者のエディタ環境(Unity 2022.3 + VRChat SDK3 Worlds)と ClientSim で確認しています。PC VR 実機と Quest 実機の検証はまだです ・視線の判定は顔の向きと距離だけです。間に壁があるかは見ていません
同梱物
1. OutOfViewSwap(見ていない間に入れ替える) 2. AreaJumpScare(範囲に入った瞬間に出す) 3. OutOfViewApproach(見ていない間に近付く) 4. AreaRandomAppear(範囲にいる間、たまに出る) 5. LookToAppear(見たら出る) 6. 設定済みの見本プレハブ 5 個 7. 見本シーン(L 字の通路 144m)と、区画ごとのリセットボタン 8. 見本シーン用のマテリアルと説明パネル画像 9. README / LICENSE / CHANGELOG
動作環境
・Unity 2022.3 系 ・VRChat SDK3 Worlds(UdonSharp 同梱の版) ・PC VR 実機と Quest 実機での動作は未検証です(確認でき次第、更新履歴に書きます)
導入手順
1. unitypackage を取り込む 2. 使いたい部品のプレハブを Prefabs から置く。または空のオブジェクトにスクリプトを付ける 3. 出したい物(モデルやパーティクル)を対応する欄に入れる 4. 2 番と 4 番は Is Trigger を入れた Collider が要ります 5. 再生して待ち時間と距離を調整する 見本シーンの待ち時間と距離は、試す人を待たせないために既定より短くしてあります。そのまま自分のワールドへ持っていくと、すぐ発動しすぎます。既定値から始めてください。
1. OutOfViewSwap 見ていない間に入れ替える
誰の視界にも入っていない間に stateBefore を消して stateAfter を出します。見ている最中は変わりません。同期は Manual なので、後から来た人にも入れ替わった後の状態で見えます。 ・stateBefore / stateAfter: 前の形と後の形。片方だけでも動く(消すだけ / 出すだけ) ・lookTarget: 見ているかを判定する位置。空ならこのオブジェクトの位置 ・viewAngle: 見ていると数える角度。既定 120 度 ・minimumDistance: これより近くに人が居る間は発動しない。既定 3m。目の端で動きに気付かれるため ・maximumDistance: この距離の中に人が居る時だけ判定する。既定 25m ・requireSeenBeforeSwap: 前の形を誰か 1 人が一度見てから発動する。既定 ON ・minimumDelay / maximumDelay: 視界から外れてから入れ替わるまでの秒数。既定 1.5 〜 6 秒
2. AreaJumpScare 範囲に入った瞬間に出す
Is Trigger を入れた Collider が要ります。範囲に入った瞬間、その人の顔の正面に出します。見た本人の画面にだけ出ます。 ・target: 出す物 ・appearAt: 出す位置を決め打ちする場合に入れる。空なら顔の正面 ・appearDistance: 顔からの距離。既定 2m ・showDuration: 出してから消えるまでの秒数。既定 1.5 秒 ・onceOnly: 一度きりにする。既定 ON ・holdPlayerStill: 出ている間プレイヤーを動けなくする。既定 ON ・turnSpeed: 出た物がプレイヤーの方を向く速さ(度/秒)
3. OutOfViewApproach 見ていない間に近付く
視界から外れるたびに mover を stepDistance だけプレイヤーへ寄せます。見ている間は止まったままです。同期は Manual で、位置は全員で揃います。 ・mover: 動かす物 ・stepDistance: 一度に詰める距離。既定 1.5m ・minimumDelay / maximumDelay: 視界から外れてから動くまでの秒数。既定 1 〜 3 秒 ・stopDistance: ここまで来たら止まる。既定 1.2m ・viewAngle / maximumDistance: 1 番と同じ ・returnWhenEmpty: 誰も居なくなったら元の位置へ戻す。既定 ON
4. AreaRandomAppear 範囲にいる間、たまに出る
Is Trigger を入れた Collider が要ります。範囲に留まっている間、rollInterval 秒ごとにくじを引いて、当たったら出します。幽霊が出た、という小ネタ向けです。見た本人の画面にだけ出ます。 ・targets: 出す物の候補。毎回この中から 1 個選びます ・place: 出す場所の決め方。次の 4 通りから選びます - OutOfSight: その時に見ていない向き - InFrontOfFace: 顔が向いている方向の前 - FixedPoints: 決めた位置から抽選 - PointsOutOfSight: 決めた位置のうち、見えていない所だけから抽選 ・appearPoints: FixedPoints と PointsOutOfSight で使う位置 ・appearDistance: 顔からの距離。既定 3m。壁があれば手前 0.3m まで詰めます ・warmUp: 範囲に入ってから最初のくじまでの秒数。既定 3 秒 ・rollInterval: くじを引く間隔。既定 4 秒 ・chance: 1 回あたりの当たる確率。既定 0.2 ・showDuration: 出してから消えるまでの秒数。既定 2 秒 ・onceOnly: 一度出したら終わりにする。既定 OFF ・coolDown: 消えてから次のくじまで空ける秒数。既定 20 秒
5. LookToAppear 見たら出る
決めた場所を lookDuration 秒見続けると出します。1 番の逆で、見ているから出る部品です。見た本人の画面にだけ出ます。 ・lookTarget: 見てほしい場所。空ならこのオブジェクト自身の位置 ・target: 出す物 ・viewAngle: 見たと数える角度。既定 30 度。狭くすると、しっかり目を向けた時だけ出る ・minimumDistance / maximumDistance: この範囲の外からは出ない。既定 0 〜 20m ・lookDuration: 何秒見続けたら出すか。既定 0.4 秒 ・onceOnly: 一度出したら消さない。既定 ON ・hideWhenLookAway: 視線を外した時に消す。既定 ON ・showDuration: 出してから消えるまでの秒数。0 で、視線を外すまで出たまま
見本シーン
Scenes/KowagaraseKit_Sample.unity を開いて再生すると、通路を奥へ進みながら 5 本を順に試せます。床と壁の色は次の意味です。 ・青緑の床: ここに立つ ・黄色の床: 踏むと発動する ・灰色: 変化する前の形 ・暗い赤: 変化した後の形 ・壁の目のしるし: そこを見る場所。斜線が入っているものは、そこから視線を外す場所 壁のボタンを触ると、その区画の部品が入った直後の状態へ戻ります。このリセットは見本シーン専用で、自分のワールドへ持っていく必要はありません。5 本のスクリプト側には手を入れず、外から変数を書き戻す形にしてあります。 通路は途中で右へ折れ、その先が後半です。5 本を組み合わせただけで作った場面が 4 つ並んでいます。 ・読ませている間に、背後へ: 5 番。lookTarget を壁の貼り紙にして、出す位置を読んでいる人の背中側にしただけです。文章を置くと、その間だけ視線が固定できます ・曲がり角の先に立たせる: 1 番を角の死角に置いて、requireSeenBeforeSwap を OFF、viewAngle を 50 度にしています。角そのものが視線を切るので、入れ替わる瞬間は見られません ・引き返すと変わっている: 1 番を 4 つ並べただけです。壁のしみ、床の箱、天井の配管、扉。1 つだけだと見落とされます ・入った瞬間と、いる間: 2 番と 4 番を重ねています。入口の一撃は onceOnly を ON、留まる間の方は OFF です
利用規約
・個人・商用を問わず、ワールドへの組み込みは自由です ・改造・コード流用・改造版の公開も自由です ・パッケージそのものの再配布(そのまま無償・有償で配る行為)はご遠慮ください ・クレジット表記は任意です ・説明パネルの画像は、作者が Noto Sans JP(SIL Open Font License 1.1)でレンダリングした画像です。フォント本体は同梱していません。それ以外は作者の制作物です ・現状有姿(AS IS)で提供します。不具合・損害について責任を負いません ・サポート・更新は行う場合がありますが義務ではありません。不具合報告は商品ページのコメント欄へどうぞ
更新履歴
1.0.0 (2026-09-16) 初版








