Pular para o conteúdo principal

Images Labels em Game Objects

Um recurso que vemos em muitos jogos por aí, são labels ou imagens sob alguns objetos.

Olhe o código a seguir:


import UnityEngine.UI;

var icone:Image;
function Start (){
 icone.enabled = false;
} function Update () {
 var screenPos:Vector3 = Camera.main.WorldToScreenPoint(transform.position);
 icone.transform.position = screenPos;
} function OnMouseOver(){
 icone.enabled = true;
} function OnMouseExit(){
 icone.enabled = false;
}

No código acima podemos ver que primeiro fazemos o import da biblioteca UI da Unity, para poder trabalhar com a interface gráfica. Em seguida criou-se a variável icone do tipo Image, essa imagem será a imagem qeu ficara sob nosso gameObjet, e ela é um gameObjet Image, filho do Canvas, na nossa interface da unity.

Por padrão iniciamos nossa imagem desabilitada. Na função update usou-se o método WorldToScreenPoint, que retorna a posição do gameObject em relação a tela e em seguida colocamos nossa imagem(icone) na posição da gameObject.

Os métodos OnMouseOver e OnMouseExit, são executado quando o mouse entra e sai consecutivamente do nosso gameObject, nesse exemplo, quando o mouse está sobre nosso gameObject, habilitamos o icone, e quando o mouse sai, desabilitamos.

Dessa forma, nossa imagem será mopstrada sobre nosso gameObject, somente quando o mouse estiver sobre ele. Isso pode ser usado para dar dicas ao usuário em NPCs ou sobre teclas de ação, por exemplo:

Em um jogo, ao passar o mouse sobre algum objeto, pode-se fazer aparecer uma imagem com uma tecla de ação específica para aquele objeto.

É isso aí, explore e modifique os códigos a vontade, criando assim jogos muito mais interativos.

Comentários

Postagens mais visitadas deste blog

Comera Follow com Rotate

Ainda pensando no movimento da câmera, outro recurso muito utilizado é a rotação dela em torno do player. Observe o código a seguir. var player:Transform; var turnSpeed:float = 4.0f; var smooth:boolean = false; private var offset:Vector3; private var velocidade:Vector3; function Start () { offset = transform.position - player.position; Cursor.lockState = CursorLockMode.Locked; } function LateUpdate(){ offset = Quaternion.AngleAxis (Input.GetAxis("Mouse X") * turnSpeed, Vector3.up) * offset; if(smooth){ var targetPosition : Vector3 = player.position + offset; transform.position = Vector3.SmoothDamp(transform.position, targetPosition, velocidade, 0.3f); }else{ transform.position = player.position + offset; } transform.LookAt(player.position); } Nesse código tem-se agora, o player ou target do tipo Transform, atente-se a isso, dessa forma temos acesso apenas à propriedade Transform do player, existe também a variável turnSpeed que será a velocidade de rotaçã...

GUI

Nesse artigo será abordado como trabalhar com alguns elementos da GUI. Os elementos abordados serão, TextField, Button, Slider e Box. Quando for trabalhar com elementos da UI (User Interface) deve-se primeiro fazer o import necessário no início do arquivo de script  import UnityEngine.UI;  A função OnGUI da própria Unity é a responsável por exibir e interagir com os elementos criados via código.  function OnGUI(){  } Botão Para criar botões, o código será o seguinte if ( GUI.Button( Rect( 10, 70, 100, 30 ), "Input"  ) ){         Debug.Log(stringToEdit);     } Essa é uma das maneiras de criar um botão, pois o método GUI.Button tem várias assinaturas. Da maneira utilizada o primeiro parâmetro está relacionado à posição do botão na interface, que s...

Input GetKey

Quando se trata de entrada do usuário, na unity temos vários métodos que permitem isso, nesse post será explicado sobre as teclas. Quando se quer saber se alguma tecla foi apertada, pode-se usar Input.GetKey, Input.GetKeyDown e Input.GetKeyUp. Esse três métodos retornam valores booleanos (true ou false), caso a tecla passada como parâmetro atenda a condição de cada método, por exemplo Input.GetKey(tecla) : retorna true se a tecla estiver pressionada. Input.GetKeyDown(tecla) : retorna true se a tecla foi pressionada e já altera seu valor, enquanto a tecla nao for solta e pressionada novamente, não volta a ser true. Input.GetKeyUp(tecla) : retorna true quando a tecla é solta, o oposto do Input.GetKeyDown. O exemplo abaixo vai mudar a cor do nosso gameObject dependendo do estado da tecla. private var cor:Material; function Start () { cor = GetComponent. ().material; } function Update () {...