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.