Pular para o conteúdo principal

Postagens

Mostrando postagens de março, 2018

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 OnMouseO...

Input MouseButton

Bem parecido o post anterior sobre as teclas, os botões do mouse funcionam bem parecidos. Para o mouse tem-se os métodos Input.GetMouseButton() , Input.GetMouseButtonDown() e Input.GetMouseButtonUp() . Os três funcionam de forma identica as teclas. Os três retornam true ou false dependendo do seu estado, GetMouseButton, retorna true enquanto o mouse estiver pressionado, GetMouseButtonDown retornará true somente no clique do mouse, e o GetMouseButtonUp será true se o clique/mouse for solto. A seguir um código bem parecido com o anterior, só para identificar os botões do mouse. private var cor:Material; function Start () { cor = GetComponent. ().material; } function Update () { if(Input.GetMouseButton(0)){ cor.color = Color.red; }else{ cor.color = Color.white; } } O número 0 passado como parâmetro na função GetMouseButton indica o botão esquerdo do mouse, para saber se o botão direito do mouse está pressionado, o número seria 1, e para saber se o scroll está pressionado u...

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 () {...

UnityScript

Como já dito, em outro post, a Unity permite trabalhar com duas linguagens de programação, são elas C# e Javascript. Nesse post será apresentado uma introdução à algumas funções e palavras-chave quando trabalha-se com a Unity usando Javascript. Veja a seguir o exemplo de algumas dessas palavras e funções. Java Script import Importar bibliotecas necessárias import UnityEngine.UI; // Comentar uma linha //Essa linha é um comentario private, public Visibilidade da variável, por padrão as variáveis são public private var segredo:String; public var nome:String; bool Variável: true ou false var pego:bool; int Variável de número inteiro var idade:int; float Variável de número decimal var numero:float; String Variável de texto var nome:String; null Variável nula + - * / % ++ -- Operadores matemáticos 2 + 5 if(condição){ código } Estrutura de seleção 'if' if(blog == "FrankDantas.js"){ println("Blog interessante"); } == != < > <= >= Operadores relacionais...

Novos GameObjects em tempo de execução

Para criar novos objetos em tempo de execução, isto é, enquanto o jogo está rodando, utiliza-se a função Instantiate , que cloca e retorna esse clone criado do gameObject passado à ela. Esse métodos tem várias assinaturas,sendo a mais comum a seguinte: Instantiate(original: Object, position: Vector3, rotation: Quaternion): Object; O código acima diz que o método Instantiate recebe três parâmetros, o primeiro é um gameObject, o objeto que será clonado, o segundo parâmetro é uma variávelde Vector3, que indica a posição que esse objeto será instanciado e a terceira, qual a rotação nos três eixos. E tudo isso, no caso o objeto criado, retornará em um objeto. Consufuso? Vamos lá então public var prefab: Transform; function Start() { for (var i: int = 0; i O código acima, não necessita alterar valor do objeto, sendo assim usa apenas o Instatiate, sem atribuir ele a uma variável. Acima ´tem-se um código que instancia/cria 10 gameObjet do tipo prefab a partir da posição Vector3(0, 0...

Input GetAxis

Uma das formas de entrada que o usuário pode ter e que a unity ofere é a entrada por meio de axis (eixos). O input axis da unity funciona tanto para teclados quanto para joysticks, e o valor de retorno é entre -1 e 1. Porém, para PC ainda é possível detectar o movimento com o mouse, também um axis. Para teclado e joysticks é possível pegar os eixos vertical e horizontal, e aumentar seu range/intervalo pode ser feito com uma variável auxiliar de sensibilidade. A seguir um exemplo usando o teclado para movimentação simples. var velocidade : float = 10.0; var velocidadeRotacao : float = 100.0; function Update () { var movimento : float = Input.GetAxis ("Vertical") * velocidade * Time.deltaTime; var rotacao : float = Input.GetAxis ("Horizontal") * velocidadeRotacao * Time.deltaTime; transform.Translate (0, 0, movimento); transform.Rotate (0, rotacao, 0); } Mas como funciona o código acima? No código acima é possível ver, no início do script, a...