HUD (Head Up Display) é uma espécie de painel utilizado para mostrar informações durante o jogo usando imagens e textos. Existem duas formas de desenhar o HUD, a mais comum é utilizando uma classe Canvas que possui funções para desenhar os gráficos e textos. A outra opção é utilizando o Scaleform GFx que permite que cenas feitas no editor Flash possam ser importadas para o UDK.
A imagem abaixo mostra as subclasses de HUD encontradas no UDK:
Fiz um exemplo de HUD que desenha uma imagem, um texto e um retangulo. Neste exemplo é desenhado uma barra de energia, a medida que o tempo passa a barra de energia diminui e muda de cor, como pode ser visto nas imagens:
Código do exemplo:
class TesteHUD extends UTHUD;
var CanvasIcon relogioIcon;
var int relogio;
event PostBeginPlay()
{
SetTimer( 1, true );
relogio = 30;
}
function Timer()
{
relogio--;
if(relogio <= 0)
{
relogio = 30;
}
}
function DrawHUD()
{
super.DrawHUD();
Canvas.DrawIcon(relogioIcon, 0, 0);
Canvas.Font = class'Engine'.static.GetLargeFont();
Canvas.SetDrawColor(255, 255, 255); // Branco
Canvas.SetPos(70, 15);
Canvas.DrawText(relogio);
if(relogio < 10)
{
Canvas.SetDrawColor(255, 0, 0); // Vermelho
}
else if (relogio < 20)
{
Canvas.SetDrawColor(255, 255, 0); // Amarelo
}
else
{
Canvas.SetDrawColor(0, 255, 0); // Verde
}
Canvas.SetPos(200, 15);
Canvas.DrawRect(20 * relogio, 30);
}
defaultproperties
{
relogioIcon=(Texture=Texture2D'UDKHUD.Time')
}
Agora, precisamos criar uma subclasse de GameInfo para referenciar a nova classe HUD. Só uma observação, se você estiver utilizando as classes UTGame/UTHUD é preciso definir como true a propriedade bUseClassicHUD na subclasse de UTGame, senão o seu HUD não irá funcionar.
class MeuUTGame extends UTGame;
defaultproperties
{
HUDType=class'RomeroScripts.TesteHUD'
bUseClassicHUD=true
}
Para mais informações sobre HUD:
HUD Technical Guide