Aula8 instancias

11
Projetos RAD : Unity 3D Criação de Instâncias e Objetos Augusto Bülow

description

Aula para criação de instancias no Unity3D

Transcript of Aula8 instancias

Page 1: Aula8 instancias

Projetos RAD : Unity 3DCriação de Instâncias e Objetos

Augusto Bülow

Page 2: Aula8 instancias

Unity

• Criar objetos por script:– Primitivas: objetos básicos e gerais– Instâncias: objetos complexos, pré-modulados

• Utilização geral:– Criar inimigos e itens em tempo real– Criar balas e disparos– Criar objetos auxiliares (diversos)– Criar cenários em tempo real

– Limite = imaginação

Page 3: Aula8 instancias

Unity

• Criando um novo objeto : primitivas• GameObject.CreatePrimitive

– Definir tipo de primitiva

//criando objeto simples

if (Input.GetKey("1")) {

GameObject.CreatePrimitive(PrimitiveType.Cube);

}

Page 4: Aula8 instancias

Unity

• Tipos de primitivas válidas:• PrimitiveType.

– Sphere– Capsule– Cylinder– Cube– Plane

• Objetos criados são posicionados na origem do mundo inicialmente. Coordenadas (0,0,0)

Page 5: Aula8 instancias

Unity

• Possível manter uma referência ao objeto na criação• Com sua referência (ponteiro):

– Atualizar suas propriedades– Adicionar componentes em geral

if (Input.GetKeyDown("2")) {

var novo = GameObject.CreatePrimitive(PrimitiveType.Cube);

//colocar novo objeto em posição específica

novo.transform.position = Vector3( 2, 2, 2);

}

Page 6: Aula8 instancias

Unity

• Adicionando um componente a um objeto:• gameObject.AddComponent(type)

– Rigidbody– “SphereCollider”– “ScriptName” ou “AssetName”

if (Input.GetKeyDown("2")) {

var novo = GameObject.CreatePrimitive(PrimitiveType.Cube);

novo.transform.position = Vector3( 2, 2, 2);

novo.AddComponent(Rigidbody);

}

Page 7: Aula8 instancias

Unity

• Criando um objeto vazio (empty)– Possível atribuir um nome– Possível adicionar todos componentes manualmente

• new GameObject(“nome”)

if (Input.GetKeyDown("4")) {

novo3 = new GameObject ("Vazio");novo3.AddComponent ("Rigidbody");novo3.AddComponent ("BoxCollider");

novo3.transform.position = Vector3( 1, 1, 1);

}

Page 8: Aula8 instancias

Unity

• Criando uma Instância – Baseado em objetos prefab (precisa de um prefab)– Prefab: objetos complexos, com materiais, códigos,

componentes já atachados = re-utilização

aux = Instantiate( original, posição, rotação);

Original = algum prefab pre-determinado

Posição = Vector3(X, Y, Z)

Rotação = Quaternion

Page 9: Aula8 instancias

Unity

• Exemplo de Instantiate

//Declarar quem será instanciado – selecionável pelo inspector

var clone : Transform;

....

if (Input.GetKeyDown("5")) {

novo4 = Instantiate(clone, transform.position,transform.rotation)

}

Page 10: Aula8 instancias

Unity

• Rotação = Quaternion• Tipo específico da Unity• Componentes X,Y,Z,W• Ângulos são interpolados pela Unity, não modificar elementos

manualmente• Operações / funções especificas para transformação de ângulo• Exemplos básicos:

– Quaternion.identity; • Ângulo 0,0,0 perfeitamente alinhado com eixos do mundo

– Quaternion.Euler(X, Y, Z)• Conversão direta de graus (X,Y,Z) para Quaternion

Page 11: Aula8 instancias

Unity

• Outros exemplos de criação múltipla:

var clone2 : Transform;...

if (Input.GetKeyDown("6")) {

// 10 instancias do clone2, 2 unidades de distancia

for (var i=0; i<10; i++) {

Instantiate (clone2, Vector3(i * 2.0, 0,0),Quaternion.identity);

}

}