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:每个客户端一个。将 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 inset)与 camera:ViewportPointToRay(mx, my)(原始坐标,不考虑 inset)。ScreenPointToRay 返回单位射线(1 stud);将 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)。

参见 references/full.md,了解第一人称/第三人称方案、过场动画、屏幕抖动、鼠标视角及完整 API。

评论

支持 Markdown