【無料】肩越しの三人称カメラ
- ダウンロード商品¥ 0




最初に書いておきます。VRChat はデスクトップで F5 を押せば三人称視点になります。
できること
■ 肩越しの視点 右後ろ 2.2m。左右・高さ・後方距離は数値で変えられます。アバターの目の高さに合わせて距離が伸縮するので、小柄なアバターでも豆粒になりません。 ■ 壁にカメラを刺さない 中心 1 本と四隅 4 本のレイで壁を測り、手前 0.15m で止めます。四隅は円錐状に広げてあって、角を曲がった瞬間の突き抜けはこれで消えました。壁に寄るときは補間せず即座に寄せ、離れるときだけ滑らかに戻します。逆にすると、壁にめり込む一瞬が見えてしまう。 ■ 狭い通路で横ずらしを詰める 横に壁があると肩越しの横ずれを自動で詰めて、通路の幅に合わせて背後へ回り込みます。 ■ 立ち止まると見回せる 三人称で立ち止まると、マウスでカメラだけが体の周りを回ります。体は動きません。歩き出すとカメラを止めたまま、体が向きを合わせてから進みます。 ■ ズームと後方確認 キーを押している間だけ最大 2 倍。ホイールでさらに 4 段あります。後方確認は押している間カメラが 180 度回り、離すと戻ります。 ■ 照準マーカー 肩越しだと画面中央と実際に向いている点がずれます。頭の正面へレイを飛ばして、当たった点に小さな輪を出します。壁の陰なら赤。 ■ 画面揺れ 他の Udon から呼んだときだけ揺れます。爆発の位置と半径を渡すと、近いほど強く。呼ばなければ何も起きません。 ■ 画面のキー操作ガイド 三人称の間だけ右下にキーと説明を出します。設定したキーから文字を作るので、キーを変えると表示も変わります。FPS 表示も付けられます。 ■ ON/OFF の記憶 デスクトップで切り替えた状態を VRChat の PlayerData に保存して、次の入室時に戻します。
注意
・PC VR 実機と Quest 実機では未検証です。作者のエディタ(Unity 2022.3.22f1 + VRChat SDK3 Worlds 3.10.4)と ClientSim でのみ確認しています ・VR では既定で無効です。全画面の板は酔います。切ることもできますが勧めません ・板は既定で Water(4)レイヤーを使います。ワールドで Water を使っている場合は別の空き番号へ変えてください ・同梱の RenderTexture を他の用途と共有しないでください。三人称を切った瞬間に中身が消えます ・キーは VRChat 本体と重ならないものを選んでください。W/A/S/D、Space、Shift、C、Z、Escape は本体が使っています ・キー操作ガイドのフォント(TextMesh Pro 標準)に日本語は入っていません。日本語にする場合は自前の TMP フォントを入れ、材質の描画順を 4001 以上にしてください
同梱物
1. ThirdPersonView.prefab — 置くだけで動くプレハブ一式(カメラ・板・切り替えボタン・見回し用の座席) 2. Udon/ThirdPersonView.cs — 本体。カメラの位置・壁寄せ・演出を計算する 3. Udon/ThirdPersonViewToggle.cs — 切り替え。Interact / 他 Udon / トリガーエリア / キーの 4 通り 4. Udon/ThirdPersonViewHints.cs — 画面右下のキー操作ガイド 5. Shaders/ThirdPersonScreen.shader と ThirdPersonMarker.shader — 板と照準マーカー 6. Materials 3 点、Textures/ThirdPersonView_RT.renderTexture 7. Scenes/ThirdPersonViewSample.unity — 壁と柱を置いた見本シーン 8. README / LICENSE / CHANGELOG
動作環境
・Unity 2022.3 系 ・VRChat SDK3 Worlds(UdonSharp 同梱の版) ・作者の確認環境は Unity 2022.3.22f1 / VRChat Worlds 3.10.4 ・デスクトップ専用です。VR では既定で無効になります ・PC VR 実機と Quest 実機での動作は未検証です(確認でき次第、更新履歴に書きます)
導入手順
1. unitypackage を取り込む 2. ThirdPersonView.prefab をシーンに置く 3. ToggleButton を触りやすい場所へ動かす(または削除して自前のボタンから呼ぶ) 4. 再生して ToggleButton をクリックすると三人称になる 既定では入室時 OFF、VR では常に OFF です。見本シーンを開いて再生すれば、壁寄せと横詰めをその場で試せます。
キーで操作する
ThirdPersonViewToggle にキーを割り当てると、デスクトップから直接操作できます。プレハブでは切り替えの T だけ設定済みで、残りは None(使わない)です。 ・toggleKey — 三人称の ON/OFF(既定 T) ・lookBackKey — 押している間だけ後方確認 ・zoomKey — 押している間だけズーム。ホイールでさらに 4 段 ・swapKey — 肩の左右を入れ替える ・aimMarkerKey — 照準マーカーの表示を切り替える ・orbitLeftKey / orbitRightKey — 押している間、カメラだけが体の周りを回る ・freeLookKey — 押している間、歩く向きを固定する 同じシーンに ThirdPersonViewToggle を複数置く場合、キーを受け付けるのは 1 つだけにしてください。全部が反応して打ち消し合います。
立ち止まっている間の見回し
三人称で立ち止まって 0.3 秒たつと、キーを押さなくてもマウスでカメラだけが体の周りを回ります。体は動きません。 仕組みは見えない座席(VRCStation)です。座席の中ではマウスの横の動きが体でなく頭を回すので、カメラが頭に付いて回ります。座席の頭は左右 90 度までなので、カメラ側の角度を 2 倍にしてアバターの正面まで回り込めるようにしてあります。 移動キーを押すと、カメラはその場に止めたまま体が 0.2 秒かけてカメラの向きへ回ってから歩き出します。見ていた方へそのまま進めます。この動きを切ると、歩き出した後にカメラが体の後ろへゆっくり戻ります。 座席はプレイヤーごとに 1 つずつ複製されるので、複数人が同時に立ち止まっても取り合いません。ClientSim では座る・90 度で止まってカメラが 180 度回る・体が約 0.2 秒で向きを合わせる、までを確認しています。実機での他人からの見え方は未確認です。
他の Udon から呼ぶ
ThirdPersonView と ThirdPersonViewToggle の public メソッドを SendCustomEvent で呼べます。 ToggleView / EnableView / DisableView — ON/OFF SwapShoulder — 肩の左右を入れ替える ZoomIn / ZoomOut / ToggleZoom — ズーム LookBack / LookLeft / LookRight / LookForward — カメラだけ向きを変える ToggleAimMarker / ShowAimMarker / HideAimMarker — 照準マーカー Shake — 画面を揺らす 引数付きの AddShake(強さ, 秒) と AddShakeAt(位置, 半径, 強さ, 秒)、OrbitBy(度) は、U# スクリプトから直接呼んでください。
描画負荷
三人称の間はプレイヤー自身のカメラの描画対象を板のレイヤーだけに絞ります。板の裏のワールドは元から 1 ピクセルも見えていないので、描くのをやめても見え方は変わりません。シーンを描く回数は撮影カメラの 1 回だけです。 この設定を切ると撮影カメラとプレイヤーのカメラで 2 回描きます。ミラーが 1 枚増えるのと同程度です。 同梱の RenderTexture は 1920×1038 です。重ければ解像度を下げてください。三人称を切っている間は RenderTexture を解放してビデオメモリを返します。
利用規約
・個人・商用を問わず、ワールドへの組み込みは自由です ・改造・コード流用・改造版の公開も自由です ・パッケージそのものの再配布(そのまま無償・有償で配る行為)はご遠慮ください ・クレジット表記は任意です ・同梱物はすべて作者の制作物です。第三者素材は含みません ・現状有姿(AS IS)で提供します。不具合・損害について責任を負いません ・サポート・更新は行う場合がありますが義務ではありません。不具合報告は商品ページのコメント欄へどうぞ
更新履歴
1.0.17 (2026-09-21) 初回公開。1.0.0 からの内訳は同梱の CHANGELOG.txt にあります




