LeCodesdocs

Camera2D

Ортографическая камера Scene2D. Каждая сцена владеет одной — обращайся к ней как scene.camera; сам Camera2D ты не конструируешь.

Обзор

TypeScript
const scene = new Scene2D()
scene.camera.zoom = 2                        // 2× увеличение — дружелюбно к пиксель-арту

// держим камеру на герое, с лёгким сглаживанием
setLoop(dt => {
  scene.camera.position = scene.camera.position.lerp(hero.worldPosition, 10 * dt)
})

Трансформ

TypeScript
camera.position = [x, y]     // мировые единицы — точка в центре экрана
camera.zoom = 2              // увеличение; при 1, 1 мировая единица = 1 логический px. По умолчанию 1
camera.rotation = 15         // градусы, CCW. По умолчанию 0

Геттеры возвращают свежие значения (camera.position.x = 3 — no-op — см. Соглашения).

Note

встроенного follow() нет. Следи за узлом из setLoop (как выше) или маленьким аспектом с update(dt) — нечего освобождать, когда цель исчезает.

Экран ↔ мир

TypeScript
camera.screenToWorld(screenX, screenY): Vec2   // логические px → мировые единицы
camera.worldToScreen(worldX, worldY): Vec2     // мировые единицы → логические px

screenToWorld — пара для обработки тапов: преобразуй ev.clientX/clientY и передай результат в scene.pick() или Physics2D.overlapPoint(). Помни про смену знака: экранный Y смотрит вниз, мировой Y — вверх — преобразование делает это за тебя.

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