Aula 3: Instanciar GameObjects

Instanciando um Objeto em Tempo de Execução

Antes de começar a desenvolver um projeto com Unity, uma boa prática é estruturar os diretórios do projeto. Crie as seguintes pastas:

C:\Users\CamiloCG\AppData\Local\Microsoft\Windows\INetCache\Content.Word\Captura de tela 2016-05-11 19.16.45.png

Para criar um Script em C#:

  1. Na pasta Scripts clique com o botão direito, abrirá uma tela. Selecione Create> C# Script.
  2. Digite o nome do Script.

Método para instanciar um GameObject

  1. Instantiate(GameObject, position Vector3, rotation Quaternion)

Exemplo 1:

using UnityEngine;

using System.Collections;

public class Exemp1 : MonoBehaviour {

    public GameObject obj;

        // Use this for initialization

        void Start () {

           Instantiate(obj, new Vector3(0, 0, 0), Quaternion.identity);

        }

        

        // Update is called once per frame

        void Update () {

        }

}

Exemplo 2:

using UnityEngine;

using System.Collections;

public class Exemp1 : MonoBehaviour {

    public GameObject obj;

        // Use this for initialization

        void Start () {

        for (int i = 0; i < 10; i++)

        {

            Instantiate(obj, new Vector3(i * 2.0f, 0, 0), Quaternion.identity);

        }

           

        }

        

        // Update is called once per frame

        void Update () {

        }

}

Exemplo 3:

using UnityEngine;

using System.Collections;

public class Exemp1 : MonoBehaviour

{

    public GameObject Cubes;

    void Start()

    {

        GameObject go = (GameObject)Instantiate(Cubes, new Vector3(0, 0, 0),      transform.rotation);

    }

    void Update()

    {

    }

}

Explicação em Aula

  1. Dentro da pasta Script, crie um script C# com o nome: CreateWall

Script CreateWall:

using UnityEngine;

using System.Collections;

public class CreateWall : MonoBehaviour {

    public GameObject Cubes;

    public int altura;

    public int largura;

        void Start () {

        createWall(altura, largura);

        }

        

        void Update () {

        }

   

    void createWall(int altura, int largura)

    {

        if(altura > 0 || largura > 0)

        {

            for(int i=0; i < largura; i++)

            {

                for(int j=0; j < altura; j++)

                {

                    GameObject go = (GameObject)Instantiate(Cubes, new Vector3(i, j, 0), transform.rotation);

                }

            }

        }

    }

}

  1. Dentro da pasta Scripts crie um script C# com o nome: AtirarBola

Script AtirarBola:

using UnityEngine;

using System.Collections;

public class AtirarBola : MonoBehaviour {

    public GameObject bola;

    public GameObject arma;

    public float forcaDeLancamento = 1f;

        // Use this for initialization

        void Start () {

        }

        

        // Update is called once per frame

        void Update ()

    {

        if(Input.GetMouseButtonDown(0))

        {

            GameObject bolaTemporaria = (GameObject)Instantiate(bola, arma.transform.position, arma.transform.rotation);

            Rigidbody corpoBola = bolaTemporaria.GetComponent<Rigidbody>();

            corpoBola.AddForce(transform.forward * forcaDeLancamento);

            Destroy(bolaTemporaria, 10f);

        }

    }

}