Projetos RAD : Unity 3D 
Criação de Instâncias e Objetos 
Augusto Bülow
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
Unity 
• Criando um novo objeto : primitivas 
• GameObject.CreatePrimitive 
– Definir tipo de primitiva 
//criando objeto simples 
if (Input.GetKey("1")) { 
GameObject.CreatePrimitive(PrimitiveType.Cube); 
}
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)
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); 
}
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); 
}
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); 
}
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
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) 
}
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
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); 
} 
}

Aula8 instancias

  • 1.
    Projetos RAD :Unity 3D Criação de Instâncias e Objetos Augusto Bülow
  • 2.
    Unity • Criarobjetos 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
  • 3.
    Unity • Criandoum novo objeto : primitivas • GameObject.CreatePrimitive – Definir tipo de primitiva //criando objeto simples if (Input.GetKey("1")) { GameObject.CreatePrimitive(PrimitiveType.Cube); }
  • 4.
    Unity • Tiposde primitivas válidas: • PrimitiveType. – Sphere – Capsule – Cylinder – Cube – Plane • Objetos criados são posicionados na origem do mundo inicialmente. Coordenadas (0,0,0)
  • 5.
    Unity • Possívelmanter 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); }
  • 6.
    Unity • Adicionandoum 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); }
  • 7.
    Unity • Criandoum 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); }
  • 8.
    Unity • Criandouma 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
  • 9.
    Unity • Exemplode Instantiate //Declarar quem será instanciado – selecionável pelo inspector var clone : Transform; .... if (Input.GetKeyDown("5")) { novo4 = Instantiate(clone, transform.position,transform.rotation) }
  • 10.
    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
  • 11.
    Unity • Outrosexemplos 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); } }