roblox-camera について
Roblox Camera は、カスタムビュー、CFrame 変換、画面からのレイキャストなど、クライアント側のカメラ制御を扱う開発スキルです。API の指針や実装パターン、よくある注意点をまとめています。
主な機能
- 01CameraType とカメラプロパティのガイド
- 02CFrame による配置と回転
- 03PreRender のカメラ更新ループ
- 04画面とビューポートからのレイキャスト
- 05カスタムカメラ効果のレシピ
活用シーン
- 01カットシーンや三人称視点の作成
- 02カスタムカメラ回転の実装
- 03画面座標からのレイキャスト
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tabooharmony/ roblox-brain --skill roblox-cameraインストール後、Claude Code で/roblox-cameraを入力して読み込まれたか確認します。
同梱ファイルreferences/full.md
詳細
Roblox Camera
読み込むタイミング
カットシーン、三人称視点での追従、カスタム回転などのカスタムカメラ動作をスクリプトで実装する場合、配置や回転のために CFrame を操作する場合、画面からレイキャストする場合、または標準以外のプレイヤー視点を構築する場合に読み込みます。クライアント専用です。
クイックリファレンス
カメラ:workspace.CurrentCamera:クライアントごとに1つあります。既定の動作を無効にして完全に制御するには、CameraType = Scriptable に設定します。設定しないと、毎フレーム既定の動作によって CFrame が上書きされます。
CameraType:Fixed、Attach/Watch/Track/Follow(対象に追従)、Custom(既定)、Scriptable(既定の動作なし)、Orbital(Y軸を固定し、プレイヤーの周囲を回転)。CameraSubject に nil は設定できません。設定すると元に戻ります。
主なプロパティ:CFrame、CameraSubject、FieldOfView(度)、FieldOfViewMode(Vertical/Diagonal)、NearPlaneZ、ViewportSize、HeadLocked、HeadScale、Focus。
CFrame の基本:
| 操作 | Luau |
|---|---|
| 位置のみ | CFrame.new(position) |
| ターゲットを見る | CFrame.lookAt(position, target, upVector) |
| XYZ 回転 | CFrame.Angles(rx, ry, rz) |
| ローカル座標からワールド座標へ | cf * Vector3.new(0, 0, 10) |
| 補間 | cf:Lerp(goal, alpha) |
| 単位軸 | cf.LookVector、cf.RightVector、cf.UpVector |
カスタムカメラのループ:必ず PreRender を使い、Heartbeat は使わないでください。
camera.CameraType = Enum.CameraType.Scriptable
RunService.PreRender:Connect(function(dt)
local desired = CFrame.lookAt(head.Position - offset, head.Position)
camera.CFrame = camera.CFrame:Lerp(desired, math.min(dt * 10, 1))
end)
カメラからのレイキャスト:camera:ScreenPointToRay(mx, my)(GUI インセットを考慮)と camera:ViewportPointToRay(mx, my)(生の座標。インセットは考慮しません)があります。ScreenPointToRay は単位長の Ray(1 スタッド)を返すため、実際にレイキャストするには Direction に長さを掛けてください。
注意点:
- クライアント専用です。サーバーからの設定は通知なく破棄されます。
Scriptableを設定しないと、毎フレーム既定の動作によってCFrameが上書きされます。- カメラには
PreRenderを使ってください(ビジュアルとの同期)。Heartbeatは1フレームの遅延が発生します。RenderSteppedも引き続き動作しますが、現在はPreRenderが推奨されています。 Camera.CFrameには VR の頭部回転が含まれません。実際の視点にはGetRenderCFrame()を使ってください。SetRollは古い機能です。CFrame にCFrame.Angles(0, 0, roll)を適用してロールを設定してください。CFrame.new(pos, lookAt)は旧式です(後方互換性のためのみ)。新しいコードではCFrame.lookAt(at, lookAt)を使ってください。
一人称/三人称の実装例、カットシーン、画面の揺れ、マウスルック、完全な API については、references/full.md を参照してください。