Реклама:

Вряд ли ваш HUD будет состоять из одного-двух спрайтов. В среднестатистической игре их как минимум десяток. Так как перечень объектов, входящих в HUD (давайте условимся для краткости называть их просто спрайтами), неизменен в течение всей игры, их можно создать на этапе разработки игры, добавив нужные объекты с помощью GLScene Editor (напоминаю, для вызова этого редактора надо дважды щелкнуть на пиктограмме компонента TGLScene). Только не стоит добавлять объекты, относящиеся к HUD, в корень. Создайте объект-пустышку TGLDum-myCube, сделайте его невидимым и уже в список его подобъектов добавляйте все, что относится к HUD. Теперь, просто изменив свойство visible у TGLDunvmyCube, вы можете одним махом убрать весь интерфейс с экрана (он ведь не нужен во время показа заставочных роликов или когда геймер находится в игровом меню) и так же легко его вновь показать.

Нужное количество спрайтов мы создали, теперь подумаем о том, как их инициализировать. Ни в коем случае не присваивайте жесткие координаты спрайтам через Object Inspector, если только ваша игра не будет поддерживать одно-единственное разрешение (а это дурной тон). Причем тут поддержка разрешений? А вот причем. Допустим, вы создаете игру в разрешении 1024x768 и жестко задали все характеристики спрайтов. Игрок, переключившись в разрешение 800x600, увидит, что все спрайты сбились в кучу и стали неимоверно большими. Если он переключится в 1600x1200, то все спрайты будут мелкими, да и к тому же спрайты, которые должны быть с правой и нижней сторон экрана, неожиданно окажутся в центре. Проще говоря, весь интерфейс развалится на кусочки. Поэтому координаты и размеры спрайтов должны быть привязаны к текущему разрешению.

Представьте себе, что у нас есть две глобальные переменные res_x и res_y, в которых хранятся ширина и высота экрана в пикселях. В тестовых целях вы можете присвоить им нужные значения вручную.

Есть два подхода к обработке разрешений. В первом случае вы создаете столько копий каждого спрайта, сколько разрешений будет поддерживать игра. Каждая копия будет "заточена" под определенное разрешение. Этот способ дает очень качественный интерфейс, но... придется потратить много времени на отрисовку. Во втором случае вы программно растягиваете спрайты до нужных размеров. Качество слегка страдает, но и хранить ничего дополнительно не нужно. Обычно эти два способа сочетаются: иг-роделы создают несколько копий спрайтов для базовых разрешений, а для всех остальных разрешений ближайшая по размерам копия растягивается до нужного размера.

Для примера приведу код для второго способа. Выберите какое-либо базовое разрешение, для которого будете создавать спрайты. Допустим, базовое разрешение — 1024x768. Тогда в коде, который вызывается при запуске игры, напишите для каждого HUD-спрайта.

HUDSpri te.Material.Texture.Disabled:=false; HUDSprite.Material.Texture.Image.LoadFromFile (*HUDSprite.bmp');

HUDSprite.Material.BlendingMode:=bmTransparency;

HUDSprite.Material.Texture.ImageAlpha:= tiaSuperBlackColorTransparent;


⇐ Предыдущая страница| |Следующая страница ⇒