Unity 3D: Como instanciar GameObjects

Utilizando um método padrão da Unity conseguimos criar GameObject em tempo de execução.

Existem diversas formas de se criar jogos e seus GameObjects, em uma dessas formas nós precisamos criar GameObject com um determinado comportamento em tempo de execução. Esse tipo de recurso é utilizado em um disparo em um jogo de Tank, flechas ou até mesmo criar componentes do cenário.

Para instanciar um GameObject, precisamos de algumas informações, como: Quem será criado? Onde será criado? Qual a rotação de criação?

Devemos ter essas respostas antes de pensar em script ou qualquer outra coisa. Para o nosso exemplo, vamos instanciar um GameObject Sphere,  será criado na posição e rotação de um Empty GameObject.

Seguindo as orientações acima, vamos criar um C# script chamado de InstantiateObject com o código abaixo.

using UnityEngine;

public class InstantiateObject : MonoBehaviour
{

	public GameObject spawn;

	public Transform target;

	void Update()
	{
		if (!Input.GetKeyDown(KeyCode.E))
			return;

		Instantiate(spawn, target.position, target.rotation);
	}
}

No script acima temos duas variáveis públicas, que são:

  • Spawn - GameObject que será instanciado;
  • Target - Transform na qual vamos extrair a posição e rotação.

Note que ao pressionar a tecla E, o GameObject é criado.

O método responsável por criar esses GameObject para nós, é o Instantiate, ele recebe quatro parâmetros que vamos ver a seguir, veja que omitimos o último.

  • GameObject/Prefab a ser criado;
  • Posição;
  • E rotação a ser criado;
  • Caso queira que seja instanciado dentro de algum outro GameObject, passe sua referência aqui.

Script que instancia um GameObject.
Script que instancia um GameObject.

Gunnar Correa
Gunnar Correa

Autodidata, Graduado em Desenvolvimento Web, Especialista em Tecnologias na Educação e Pós-graduando em Segurança da Informação. Começou seus estudos na área de programação quando era criança, e atualmente, está estudando desenvolvimento de jogos. Fundador da SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.

Deixe um comentário