Dança Contemporânea na arte da dança primeira parte
Aula8 instancias
1. Projetos RAD : Unity 3D
Criação de Instâncias e Objetos
Augusto Bülow
2. 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
3. Unity
• Criando um novo objeto : primitivas
• GameObject.CreatePrimitive
– Definir tipo de primitiva
//criando objeto simples
if (Input.GetKey("1")) {
GameObject.CreatePrimitive(PrimitiveType.Cube);
}
4. 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)
5. 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);
}
6. 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);
}
7. 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);
}
8. 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
9. 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)
}
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
• 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);
}
}