В Phaser, начиная с версии 3, текстовые объекты создаются с помощью
класса Phaser.GameObjects.Text. Для добавления обводки
используется свойство stroke, которое
задаёт цвет линии вокруг текста, и
strokeThickness, определяющее толщину этой
линии.
Пример создания текста с обводкой:
const text = this.add.text(400, 300, 'Пример текста', {
fontFamily: 'Arial',
fontSize: '48px',
color: '#ffffff',
stroke: '#ff0000',
strokeThickness: 4
});
text.setOrigin(0.5); // центрирование текста по координатам
Особенности работы обводки:
#RRGGBB, 'red').strokeThickness влияет на толщину линии по всему
контуру символов.Для динамического изменения обводки можно использовать методы объекта:
text.setStroke('#00ff00', 6);
Это позволит изменять цвет и толщину линии на лету в зависимости от игровой логики.
Для создания тени текста применяется метод
setShadow, который позволяет настроить
смещение, цвет, размытие и даже включение внутренней тени. Формат
метода:
text.setShadow(x, y, color, blur, shadowStroke, shadowFill);
x и y — смещение тени по горизонтали и
вертикали.color — цвет тени.blur — степень размытия.shadowStroke — включение тени для обводки
(true/false).shadowFill — включение тени для заливки текста
(true/false).Пример использования:
text.setShadow(2, 2, '#000000', 4, true, true);
Эта настройка создаёт мягкую чёрную тень с размерами смещения 2 пикселя и размытия 4 пикселя, применяемую как к заливке текста, так и к обводке.
Советы по использованию тени:
Для наиболее эффектного визуального представления текста часто применяют одновременно обводку и тень. Это позволяет создать трёхмерный вид текста, подчёркивая контраст между элементами UI и фоновыми объектами.
Пример комплексного применения:
const title = this.add.text(400, 150, 'Phaser 3', {
fontFamily: 'Verdana',
fontSize: '64px',
color: '#ffffff',
stroke: '#ff9900',
strokeThickness: 6
});
title.setOrigin(0.5);
title.setShadow(4, 4, '#333333', 5, true, true);
В этом примере:
Phaser позволяет изменять обводку и тень во время игры, что полезно для интерактивных элементов:
this.tweens.add({
targets: text,
strokeThickness: 10,
duration: 1000,
yoyo: true,
repeat: -1
});
text.setShadow(5, 5, '#000000', 10, true, false);
В данном примере толщина обводки плавно увеличивается и возвращается в исходное состояние, создавая визуальный акцент. Тень может быть одновременно изменена для добавления динамического эффекта глубины.
Обводка и тень в Phaser создают выразительный текстовый стиль, позволяя визуально отделить текст от игровых объектов и фона, усиливая эстетическую составляющую интерфейса.