skills/hytopia-camera/SKILL.md
Helps control camera perspectives in HYTOPIA SDK games. Use when users need first-person/third-person views, camera tracking, zoom effects, or cinematic cameras. Covers PlayerCamera, camera modes, offsets, and FOV.
npx skillsauth add abstrucked/hytopia-skills hytopia-cameraInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill helps you control camera perspectives in HYTOPIA SDK games.
Documentation: https://dev.hytopia.com/sdk-guides/camera
Use this skill when the user:
import { Player, PlayerCameraMode } from 'hytopia';
// Each player has a camera instance
const camera = player.camera;
import { PlayerCameraMode } from 'hytopia';
// Switch to first-person
player.camera.setMode(PlayerCameraMode.FIRST_PERSON);
// Switch to third-person (default)
player.camera.setMode(PlayerCameraMode.THIRD_PERSON);
// Attach camera origin to an entity
player.camera.setAttachedToEntity(targetEntity);
// Make camera look at/track an entity
player.camera.setTrackedEntity(enemyEntity);
// Can use both together for lock-on targeting
player.camera.setAttachedToEntity(player.entity);
player.camera.setTrackedEntity(bossEntity);
// Offset camera position relative to attachment point
player.camera.setOffset({ x: 0, y: 2, z: 0 }); // 2 units above
// Move camera forward/backward (first-person only)
player.camera.setForwardOffset(0.5);
// Shift camera left/right for over-the-shoulder view
player.camera.setFilmOffset(0.3); // Slight right offset
// Set field of view (default: 75)
player.camera.setFov(90); // Wider view
// Set zoom level (default: 2)
player.camera.setZoom(3); // More zoomed in
// Dynamic zoom for aiming
function toggleAim(player: Player, isAiming: boolean) {
if (isAiming) {
player.camera.setFov(45); // Narrow FOV for aiming
player.camera.setZoom(4);
} else {
player.camera.setFov(75); // Normal FOV
player.camera.setZoom(2);
}
}
// Hide model nodes in first-person (only affects this player's view)
player.camera.setHiddenModelNodes(['head', 'hair']);
// Useful for first-person to prevent seeing inside player model
world.onPlayerJoin = (player) => {
player.camera.setMode(PlayerCameraMode.FIRST_PERSON);
player.camera.setHiddenModelNodes(['head']);
};
world.onPlayerJoin = (player) => {
// Switch to first-person
player.camera.setMode(PlayerCameraMode.FIRST_PERSON);
// Raise camera to eye level
player.camera.setOffset({ x: 0, y: 1.6, z: 0 });
// Hide head to prevent clipping
player.camera.setHiddenModelNodes(['head']);
// Slight forward offset
player.camera.setForwardOffset(0.2);
};
function setupOverShoulderCamera(player: Player) {
player.camera.setMode(PlayerCameraMode.THIRD_PERSON);
player.camera.setOffset({ x: 0.5, y: 1.5, z: 0 }); // Right and up
player.camera.setFilmOffset(0.2); // Slight horizontal shift
player.camera.setZoom(2.5);
}
function lockOnTarget(player: Player, target: Entity | null) {
if (target) {
player.camera.setTrackedEntity(target);
player.camera.setZoom(3); // Zoom in on target
} else {
player.camera.setTrackedEntity(null);
player.camera.setZoom(2); // Reset zoom
}
}
function playCinematic(player: Player, cameraEntity: Entity, lookAtEntity: Entity) {
// Detach from player
player.camera.setAttachedToEntity(cameraEntity);
player.camera.setTrackedEntity(lookAtEntity);
// Cinematic FOV
player.camera.setFov(60);
}
function endCinematic(player: Player) {
// Return to player
player.camera.setAttachedToEntity(player.entity);
player.camera.setTrackedEntity(null);
player.camera.setFov(75);
}
function toggleScope(player: Player, isScoped: boolean) {
if (isScoped) {
player.camera.setMode(PlayerCameraMode.FIRST_PERSON);
player.camera.setFov(20); // Very narrow for scope
player.camera.setZoom(6);
} else {
player.camera.setFov(75);
player.camera.setZoom(2);
}
}
development
Helps build and manage worlds in HYTOPIA SDK. Use when users need to create terrain, place blocks, manage chunks, or work with the world editor integration. Covers blocks, chunk loading, world generation, and build.hytopia.com workflow.
tools
Helps create and use plugins in HYTOPIA SDK games. Use when users need to add NPM packages, create reusable modules, or extend game functionality. Covers plugin requirements, installation, and best practices.
development
Helps implement physics and collision in HYTOPIA SDK games. Use when users need rigid bodies, collision detection, raycasting, forces, or physics-based gameplay. Covers PhysicsComponent, colliders, raycasting, and physics simulation.
development
Helps save and load persistent data in HYTOPIA SDK games. Use when users need to save player progress, leaderboards, game state, or any data that persists across sessions. Covers PersistenceManager, global data, and player data.