Камеры
Вьюпорты, прокрутка, масштабирование, следование и эффекты — как Phaser решает, что и где отрисовывать.
Камера — это вьюпорт в мировое пространство сцены. У каждой сцены есть как минимум одна (this.cameras.main); вы можете добавить ещё для разделённого экрана, миникарт и «картинки в картинке».
Мировые против экранных координат
- Мировые координаты — это место, где живут игровые объекты. Они не меняются при движении камеры.
- Экранные координаты — это место, куда пиксели попадают на канвас.
Камера отображает одни в другие через scroll, zoom и rotation. Когда нужен оверлей в экранном пространстве (HUD), поместите его в отдельную сцену, камера которой не прокручивается.
Следование за целью
this.cameras.main.startFollow(player, true, 0.1, 0.1);
this.cameras.main.setBounds(0, 0, world.width, world.height);
Коэффициенты линейной интерполяции 0.1 сглаживают следование — 1 означает мгновенно, 0 — никогда не двигается.
Эффекты
Встроенные переходы:
shake(duration, intensity)— тряска экрана.flash(duration, r, g, b)— полноэкранная цветовая вспышка.fade(duration, r, g, b)— затухание в цвет.pan(x, y, duration)— перемещение к точке мира.zoomTo(zoom, duration)— анимация масштабирования.
Каждый возвращает похожий на твин дескриптор, который можно объединять в цепочку или ожидать через await посредством события завершения.
Несколько камер
const minimap = this.cameras.add(600, 10, 200, 150)
.setZoom(0.2)
.setBackgroundColor(0x002244);
minimap.ignore([hudLayer]); // не отрисовывать HUD на миникарте
Используйте camera.ignore(...), чтобы исключить определённые объекты из определённой камеры.