Como usar
- Copie o comando e verifique o pacote antes de instalar no seu ambiente de agente.
- Consulte no original as ferramentas, credenciais e ambientes necessários.
- Descreva os dados de entrada e a entrega esperada; confira a saída com as fontes.
npx skills add https://github.com/tabooharmony/roblox-brain --skill roblox-cameraAntes de começar
- A instalação não inclui assinatura de modelo, franquia API ou acesso aos seus arquivos.
- Estrelas e instalações indicam atividade, não um teste independente de qualidade ou segurança.
Renderizado do repositório de origem, preservando títulos, exemplos, código, tabelas, links e imagens.
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:
| Operation | Luau |
|---|---|
| Position only | CFrame.new(position) |
| Look at target | CFrame.lookAt(position, target, upVector) |
| XYZ rotation | CFrame.Angles(rx, ry, rz) |
| Local to world | cf * Vector3.new(0, 0, 10) |
| Interpolate | cf:Lerp(goal, alpha) |
| Unit axes | cf.LookVector, cf.RightVector, cf.UpVector |
Custom camera loop: always PreRender, never 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)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. PreRenderfor camera (visual sync).Heartbeatadds 1-frame lag.RenderSteppedstill works but is superseded byPreRender.Camera.CFramelacks VR head rotation; useGetRenderCFrame()for the true view.SetRollis outdated; apply roll viaCFrame.Angles(0, 0, roll)on CFrame.CFrame.new(pos, lookAt)is legacy (back-compat only); useCFrame.lookAt(at, lookAt)for new code.
See references/full.md for first/third-person recipes, cutscenes, screen shake, mouse-look, full API.


