Camera2D
Ортографическая камера Scene2D. Каждая сцена владеет одной — обращайся к
ней как scene.camera; сам Camera2D ты не конструируешь.
Обзор
const scene = new Scene2D()
scene.camera.zoom = 2 // 2× увеличение — дружелюбно к пиксель-арту
// держим камеру на герое, с лёгким сглаживанием
setLoop(dt => {
scene.camera.position = scene.camera.position.lerp(hero.worldPosition, 10 * dt)
})Трансформ
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) — нечего освобождать, когда цель исчезает.
Экран ↔ мир
camera.screenToWorld(screenX, screenY): Vec2 // логические px → мировые единицы
camera.worldToScreen(worldX, worldY): Vec2 // мировые единицы → логические pxscreenToWorld — пара для обработки тапов: преобразуй ev.clientX/clientY и передай результат в
scene.pick() или Physics2D.overlapPoint(). Помни про смену знака:
экранный Y смотрит вниз, мировой Y — вверх — преобразование делает это за тебя.
Смотрите также
- Scene2D — сцена-владелец,
pick(). - 2D-физика —
overlapPoint,raycast. - События указателя и жесты —
clientX/clientYв логических px.