К основному содержанию
скилл CX Codex

roblox-camera — скилл для Claude Code: камера в Roblox

Скилл для скриптинга камеры в Roblox: CFrame, рейкасты с экрана, первый и третий вид, катсцены. Пригодится, когда камера дрожит или лезет сквозь стены.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add TabooHarmony/roblox-brain --skill roblox-camera -a claude-code
Открыть на GitHub

Что делает roblox-camera

Скилл подключается, когда вы пишете или чините поведение камеры в Roblox: размещение через CFrame, рейкасты из точки на экране, переключение первого и третьего лица, плечевой вид, катсцены. Внутри — краткая справка по workspace.CurrentCamera, перечислению CameraType и основным свойствам вроде FieldOfView и CameraSubject, плюс таблица операций с CFrame на Luau.

Отдельный блок про ловушки. Без CameraType = Scriptable стандартное поведение перезаписывает ваш CFrame каждый кадр, а камеру двигают в PreRender, потому что Heartbeat даёт отставание на кадр. ScreenPointToRay учитывает отступ интерфейса, ViewportPointToRay — нет. Всё это клиентская часть: CFrame, выставленный на сервере, просто отбросится.

Внутри есть references/full.md с рецептами для первого и третьего лица, катсцен, тряски экрана и обзора мышью. Скилл работает во всех перечисленных платформах, но код всё равно нужно проверять в самом Roblox Studio: расхождения между версиями движка скилл не отслеживает.

Какие задачи решает

  • сделать камеру от третьего лица с плавным следованием за персонажем
  • починить дрожание камеры при движении
  • убрать проход камеры сквозь стены
  • поставить катсцену с облётом сцены
  • сделать рейкаст из точки экрана под курсором

Примеры запросов агенту

  • Напиши камеру от третьего лица для Roblox: следует за головой через PreRender и Lerp
  • Камера дрожит при беге — посмотри мой скрипт и почини
  • Сделай катсцену с облётом спавна, камера должна быть Scriptable

Как установить roblox-camera

1Через Skills CLI (Vercel)

npx skills add TabooHarmony/roblox-brain --skill roblox-camera -a claude-code

2Вручную: положить файлы

~/.claude/skills/roblox-camera/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/roblox-camera/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора27

roblox-networking Проверяет клиент-серверный код в Roblox: валидацию RemoteEvent, лимиты вызовов, NaN-значения и защиту от читов. Пригодится при настройке сетевого обмена. CX Codex +1 1 900установок roblox-luau-types Скилл для аннотаций типов Luau: дженерики, юнионы, сужение типов, строгий режим, экспорт типов из модулей. Пригодится при миграции на --!strict. CX Codex +1 2 000установок roblox-npc-ai Помогает писать и чинить NPC в Roblox: поиск пути, машины состояний, обнаружение игроков, спавны и циклы обновления ИИ. CX Codex +1 2 000установок roblox-security Скилл проверяет серверный код Roblox на уязвимости, дюпы валюты и доверие клиенту. Пригодится перед релизом плейса или при аудите RemoteEvent и сохранений. CX Codex +1 1 900установок roblox-tooling Помогает настроить или починить инструментарий для разработки в Roblox: Rojo, Wally, pesde, линтеры и пайплайны CI/CD. CX Codex +1 1 800установок roblox-analytics Скилл для работы с аналитикой Roblox: события AnalyticsService, экономика, воронки, трейсы онбординга и лимиты. Пригодится, когда инструментируешь фичу или ищешь, где игроки отваливаются. CX Codex +1 1 800установок roblox-publish-checklist Прогоняет релизные гейты перед публикацией Roblox-опыта: что сломалось, что не проверено и можно ли выпускать билд. CX Codex +1 1 900установок roblox-server-data Скилл для работы с общими данными между серверами Roblox: лидерборды, рассылки, MemoryStore, сезоны и гильдии. CX Codex +1 1 700установок

Похожие

roblox-physics gamedev-skills Скилл для работы с физикой Roblox: сборки, ограничения, группы столкновений, рейкасты и владение по сети. Пригодится, когда .Touched врёт или механизм дрожит. CX Codex +1 3 500установок roblox-animation nonlooped Скилл для анимаций персонажей Roblox: треки, IK-позы, события по маркерам и твины интерфейса. Пригодится, когда нужно собрать локомоцию или эмоцию и не сломать приоритеты. CX Codex +1 392установок roblox-mcp nonlooped Скилл подключает ИИ-клиент к Roblox Studio по MCP: агент читает дерево игры, правит скрипты, запускает Luau и плейтест. CX Codex +1 317установок roblox-luau gamedev-skills Скилл помогает писать Luau-скрипты для Roblox: работать с сервисами, создавать Instances, подключать события и настраивать безопасное взаимодействие между клиентом и сервером через RemoteEvents. CX Codex +1 6 100установок roblox-game-development greedychipmunk Скилл для разработки игр на Roblox: помогает писать скрипты на Luau, собирать игровые системы и готовить проект к релизу. CX Codex +1 2 200установок build-game-camera-controls MengTo Скилл для настройки игровых камер в Three.js: изометрия, слежение, орбита, окклюзия, тряска и тач-жесты. CX Codex +1 1 300установок

Рядом в теме «Геймдев и 3D: Unity, Unreal, Godot, Blender»

Всё по теме «Геймдев и 3D: Unity, Unreal, Godot, Blender» →

Вопросы о roblox-camera

Как установить roblox-camera в Claude?

Выполните npx skills add TabooHarmony/roblox-brain --skill roblox-camera -a claude-code. Скилл окажется в ~/.claude/skills/roblox-camera/SKILL.md.

Что делает roblox-camera?

Даёт агенту справку по камере Roblox: CFrame, CameraType, рейкасты с экрана и ловушки вроде перезаписи CFrame стандартным поведением. Плюс рецепты для первого и третьего лица, катсцен и тряски экрана.

Почему камера не двигается, хотя я задаю CFrame?

Скорее всего не выставлен CameraType = Scriptable. Без него стандартное поведение перезаписывает ваш CFrame каждый кадр.

Исходный текст

SKILL.md · MIT
---
name: roblox-camera
description: "Use when scripting or fixing Roblox camera behavior: CFrame placement, screen raycasts, first/third-person, shoulder views, cutscenes."
when_to_use: "Also when the camera clips through walls, jitters, aims wrong on touch or gamepad, or needs a death cam or spectate view."
last_reviewed: 2026-10-14
sources:
  - https://create.roblox.com/docs/reference/engine/classes/Camera
  - https://create.roblox.com/docs/reference/engine/enums/CameraType
  - https://create.roblox.com/docs/reference/engine/datatypes/CFrame
  - original
  - https://raw.githubusercontent.com/Roblox/creator-docs/main/content/en-us/reference/engine/classes/WorldRoot.yaml
---

# 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`:

```luau
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.
- `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.
- `CFrame.new(pos, lookAt)` is legacy (back-compat only); use `CFrame.lookAt(at, lookAt)` for new code.

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

© TabooHarmony · MIT · TabooHarmony/roblox-brain

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой