Roblox Camera

TabooHarmony/roblox-brain/skills/gameplay/roblox-camera

作者 TabooHarmony38826be57ee37bcf023e9c2b85681bea3909281c無授權條款收錄於 2026年10月9日更新於 2026年10月9日

Use when scripting Roblox camera behavior, CFrame placement, screen raycasts, first or third-person views, or cutscenes.

AI 產生的概覽

用於撰寫 Roblox 相機行為、CFrame 定位、螢幕射線偵測與自訂視角的參考指南。

功能
提供 Roblox 相機指令碼撰寫的快速參考:CameraType 選項、關鍵相機屬性、CFrame 操作、自訂相機迴圈模式,以及螢幕射線偵測方法。也列出常見陷阱,例如僅限用戶端、預設相機會覆寫設定,以及 ScreenPointToRay 與 ViewportPointToRay 的差異。隨附的參考檔案包含第一人稱與第三人稱做法、過場動畫、螢幕震動、滑鼠視角,以及更完整的 API 細節。
適用情境
適用於撰寫自訂 Roblox 相機行為,例如過場動畫、第三人稱跟隨或自訂旋轉。也適用於使用 CFrame 進行定位或旋轉、從螢幕進行射線偵測,或建立非預設玩家視角。
執行需求
沒有指令碼,僅為說明文件。需要具備 Luau 的 Roblox 開發環境並可存取 Roblox 引擎 API;隨附的參考檔案由代理程式讀取。

Roblox Camera

When to Load

Load when scripting custom camera behavior (cutscenes, third-person follow, custom rotation), manipulating CFrame for placement/rotation, raycasting from the screen, or building a non-default player view. Client-only.

Quick Reference

The Camera: workspace.CurrentCamera: one per client. Set CameraType = Scriptable to disable defaults and take full control. Without it, defaults overwrite your CFrame every frame.

CameraType: Fixed, Attach/Watch/Track/Follow (subject-following), Custom (default), Scriptable (no default), Orbital (fixed Y, rotates around player). CameraSubject cannot be nil: setting it reverts.

Key properties: CFrame, CameraSubject, FieldOfView (deg), FieldOfViewMode (Vertical/Diagonal), NearPlaneZ, ViewportSize, HeadLocked, HeadScale, Focus.

CFrame essentials:

OperationLuau
Position onlyCFrame.new(position)
Look at targetCFrame.lookAt(position, target, upVector)
XYZ rotationCFrame.Angles(rx, ry, rz)
Local to worldcf * Vector3.new(0, 0, 10)
Interpolatecf:Lerp(goal, alpha)
Unit axescf.LookVector, cf.RightVector, cf.UpVector

Custom camera loop: always PreRender, never Heartbeat:

luau
camera.CameraType = Enum.CameraType.ScriptableRunService.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)

Raycasting from camera: camera:ScreenPointToRay(mx, my) (accounts for GUI inset) vs camera:ViewportPointToRay(mx, my) (raw, NO inset). ScreenPointToRay returns a unit Ray (1 stud); multiply Direction by length for the actual raycast.

Pitfalls:

  • Client-only. Server sets silently dropped.
  • Without Scriptable, defaults overwrite your CFrame every frame.
  • PreRender for camera (visual sync). Heartbeat adds 1-frame lag. RenderStepped still works but is superseded by PreRender.
  • Camera.CFrame lacks VR head rotation; use GetRenderCFrame() for the true view.
  • SetRoll is outdated; apply roll via CFrame.Angles(0, 0, roll) on CFrame.
  • CameraSubject = nil reverts to previous.
  • CFrame.new(pos, lookAt) is legacy (back-compat only); use CFrame.lookAt(at, lookAt) for new code.
  • ScreenPointToRay ≠ ViewportPointToRay (GUI inset). Use ScreenPointToRay for mouse input.

See references/full.md for first/third-person recipes, cutscenes, screen shake, mouse-look, full API.

來源與署名

來源:TabooHarmony/roblox-brain位於skills/gameplay/roblox-camera提交38826be

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架