quinta-feira, 29 de setembro de 2011

ActorComponent (UnrealScript)

ActorComponent é uma classe base usada para componentes com utilidades bem definidas que podem ser anexados a um Actor. Por exemplo, podemos ter um componente que define o modelo 3D (Mesh) de um Actor, também tem componentes relacionados a imagem, iluminação, audio, etc.

Existe uma forma especial para criar um objeto de um componente dentro de um bloco DefaultProperties de uma classe Actor, como veremos no exemplo a seguir.

Como 1º exemplo vou adicionar um StaticMesh a uma classe UnrealScript. Vá no ContentBrowser do UDK e escolha um StaticMesh, anote o Nome e o Path como pode ser visto na imagem abaixo.


Depois crie uma classe simples que estende Actor conforme código abaixo:
class TesteMesh extends Actor
      placeable;  //indica que esta classe pode ser inserida no cenário através do editor de níveis
     
defaultproperties
{
   begin object Class=StaticMeshComponent Name=Modelo3D
      StaticMesh = Pickups.UDamage.Mesh.S_Pickups_UDamage        
   end object
    
   Components.add(Modelo3D);
}

O par de comandos "Begin Object / End Object" permite a criação de um objeto informando a classe e o nome que o objeto terá no código. Dentro do bloco é possível definir os atributos do objeto. Neste exemplo apenas definimos o caminho e nome do StaticMesh que será usado pelo Actor. Após a criação do objeto adicionamos ele à lista de componentes do Actor.

A imagem abaixo mostra como o nosso novo Actor é exibido no editor do UDK:


Como 2º exemplo vamos criar um SpriteComponent (imagem 2d) para o Actor. Neste exemplo queremos que a imagem seja exibida no editor mas não apareça no jogo. Isto é muito útil para objetos invisíveis que contém apenas lógica de Inteligência Artificial, pois com a imagem fica fácil de localizá-lo no editor.

Segue abaixo código e imagem do 2º exemplo.
class TesteSprite extends Actor
      placeable;
     
defaultproperties
{
   begin object Class=SpriteComponent Name=Imagem2D
      Sprite = EditorResources.AIScript
      HiddenGame = true   //não exibir a imagem no jogo
   end object
    
   Components.add(Imagem2D);
}


Para mais informações sobre Actor Components:
Actor Components

Nenhum comentário:

Postar um comentário