RenderTexture — это мощный инструмент в библиотеке Phaser 3, позволяющий динамически рисовать и комбинировать объекты сцены на одной текстуре. В отличие от обычных спрайтов, RenderTexture выступает в роли “холста”, на который можно наносить спрайты, изображения, графику и текст в реальном времени, создавая эффекты, недоступные стандартными методами.
Создание RenderTexture выполняется через метод
this.add.renderTexture в контексте сцены:
const rt = this.add.renderTexture(0, 0, 800, 600);
Параметры:
x, y — позиция RenderTexture на
сцене.width, height — размеры текстуры в
пикселях.Текстура создается пустой, готовой к динамическому заполнению графикой и спрайтами.
1. draw() Добавляет объект на RenderTexture.
rt.draw(sprite, x, y);
sprite — спрайт, текстура, графический объект.x, y — координаты на RenderTexture.Особенности:
2. clear() Очищает текстуру, возвращая её к прозрачному состоянию.
rt.clear();
Используется для перерисовки сцены или анимационных эффектов, когда необходимо удалить предыдущие кадры.
3. fill() Заполняет текстуру определенным цветом.
rt.fill(0xff0000, 1); // красный цвет с полной непрозрачностью
Полезно для создания фоновых заливок или эффектов свечения.
Для сложных визуальных эффектов можно использовать объект Graphics:
const graphics = this.add.graphics();
graphics.fillStyle(0x00ff00, 1);
graphics.fillCircle(50, 50, 40);
rt.draw(graphics, 100, 100);
graphics.destroy(); // удаляем временный объект Graphics
Особенности:
RenderTexture отлично подходит для создания динамических эффектов частиц, трейлов и смешивания слоев:
this.tweens.add({
targets: sprite,
x: 400,
duration: 2000,
onUpdate: () => {
rt.draw(sprite);
}
});
Применение:
RenderTexture поддерживает маски и трансформации:
const mask = this.make.graphics();
mask.fillStyle(0xffffff);
mask.fillRect(0, 0, 200, 200);
const bitmapMask = mask.createBitmapMask();
rt.setMask(bitmapMask);
draw():rt.draw(sprite, x, y, {
scaleX: 0.5,
scaleY: 0.5,
rotation: Phaser.Math.DegToRad(45),
alpha: 0.7
});
RenderTexture помогает снизить нагрузку на рендеринг:
RenderTexture в Phaser открывает возможности для композитной графики, кастомных визуальных эффектов и оптимизации сцены, превращая обычный рендеринг в динамическую и гибкую систему рисования в реальном времени.