mcpField
R
roblox-camera

roblox-camera

github.com/tabooharmony開発1381.9k 回インストール2 週間前に更新
リポジトリ

roblox-camera について

Roblox Camera は、カスタムビュー、CFrame 変換、画面からのレイキャストなど、クライアント側のカメラ制御を扱う開発スキルです。API の指針や実装パターン、よくある注意点をまとめています。

主な機能

  1. 01CameraType とカメラプロパティのガイド
  2. 02CFrame による配置と回転
  3. 03PreRender のカメラ更新ループ
  4. 04画面とビューポートからのレイキャスト
  5. 05カスタムカメラ効果のレシピ

活用シーン

  1. 01カットシーンや三人称視点の作成
  2. 02カスタムカメラ回転の実装
  3. 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 を参照してください。

コメント