Pular para o conteúdo principal

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 < 10; i++) {
  Instantiate(prefab, new Vector3(i * 2.0F, 0, 0), Quaternion.identity);
 }
}

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, 0), de 2 em 2 no eixo X. Ou seja ao executar o código acima você terá uma cópia do objeto prefab na posição (0,0,0), outro na posição (2,0,0), (4,0,0) e assim por diante, até ter 10 objetos, ja que o laço de repetição for vai de 0 até menos que 10.

O Quaternion.indentity faz com que nossos objetos criado tenham a rotação zerada, ou seja, todos os eixos de rotação serão 0.

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