Download - Tópicos Especiais I: Engines Introdução ao 1º Semestre 2010 > PUCPR > Pós Jogos Bruno C. de Paula
Tópicos Especiais I: EnginesIntrodução ao
1º Semestre 2010 > PUCPR > Pós Jogos
Bruno C. de PaulaBruno C. de Paula
ResumoVamos conhecer a engine Unity 3DFocaremos nas principais ferramentas e recursos que o Unity disponibilizaNas próximas aulas nos preocuparemos com o scripting destes recursosOu seja: hoje vamos trabalhar com restrições!
O que é o Unity?
Unity é um ambiente multiplataforma de desenvolvimento de jogos;
Suporte a: Windows / MacOS / Web / Wii / iPhone.
311/04/23
Características do UnityEditor de NíveisFortemente integrado com a
execução do jogo;
411/04/23
Características do UnityEditor de NíveisSuporte a Drag & Drop e
customização;
511/04/23
Características do UnityEditor de NíveisEditor de terrenos e lightmaps;
611/04/23
Características do UnityGráficosSuporte a Direct3D 9 e OpenGL;
711/04/23
Características do UnityImportação Importação de modelos, texturas, bones
e animações de Maya, 3DS, Cheetah 3D, Blender, Wavefront obj...
Heightmaps, Fontes, audio.
811/04/23
911/04/23
Características do UnityShadersEfeitos de Glow, Blur, Noise, etc
1011/04/23
Características do UnityFísica / PhysXSuporte a corpos rígidos; Junções;Ragdolls;Wheel Collider para jogos de carro;
1111/04/23
Características do UnityScriptingLinguagens de Scripting:
JavaScript (muuuito rápido!);C# (Mono);Boo (similar a Python).
1211/04/23
Vamos para a prática!
1311/04/23
Interface básica1411/04/23
Interface básica
Scene View (Cena): editor de níveis;Project View (Projeto): arquivos do
projeto;Hierarchy View (Hierarquia): objetos
que estão na cena e sua relação;Game View (Jogo): Visualização da
aplicação sendo executada; Inspector View (Inspetor): Acesso aos
componentes dos objetos;
1511/04/23
Navegação na Scene View
Principais Atalhos:Q, W, E, R;
ALT + mouse;Leitura altamente recomendada:
http://unity3d.com/support/documentation/Manual/Learning%20the%20Interface.html
http://docwiki.unity3d.com/uploads/Main/GUI%20Essentials.pdf
1611/04/23
AssetsArquivos do Projeto;
Game Objects
Elementos de um jogo;Arquitetura baseada em composição;Objeto de jogo é especificado através
da composição de várias funcionalidades (COMPONENTES);
Todo game object já nasce com um componente transform;
Cada GameObject é um repositório de componentes.
1811/04/23
Componente Transform
Posicionamento (x, y, z) [W], rotação (ângulo) [E] e escala [R];
1911/04/23
Local Space e World Space
X, Y e Z são em relação ao elemento pai;
2011/04/23
Game Objects disponíveis2111/04/23
Tipos de Game ObjectCube, Sphere, Capsule, Cylinder, Plane Cubo, esfera, cápsula, cilíndro e plano;Cada um está associado a um
componente Mesh Filter com aspecto diferente;
Colide com outros corpos por padrão;
Tipos de Game ObjectLuzesPoint light:
Luz proveniente de um ponto;Luz com localização específica;Espalha a partir do ponto;
Spotlight:Vem de um ponto;Localização específica;Gera cone de luz;
Tipos de Game ObjectLuzesDirectional Light:
Vem de uma direção;Não tem localização específica;Luz paralela;Mais forte nas áreas quadradas;Mais fraco nas angulações;Sol;
Tipos de Game ObjectCameraCapturam e mostram o mundo ao
jogador;
2511/04/23
Tipos de Game ObjectGUI Text e GUI TextureTexto e Imagens em 2D;Útil para criação da HUD;
Tipos de Game ObjectParticle SystemSistema de Partículas, formado por:
Emissor, animador e renderizador;
2711/04/23
Tipos de Game ObjectRagdollSimulação no
estilo “boneco de pano”;
Útil para “representação de mortos”;
Ver video:http://www.yout
ube.com/watch?v=g0lTE4sCyKI
*
ComponentesPodem ser associados a Game
Objects;Definem:
Comportamento;Aparência;
Podem ser scripts;Vamos analisar alguns.
Tipos de ComponentesMeshCada modelo é formado por polígonos;Um conjunto de polígonos associados é uma
mesh;Mesh Filter: pega uma malha dos Assets e
passa ao renderizador;Mesh Renderer: Renderiza uma malha a
partir de um material;Você pode gerar um mesh em programas
como 3DMax, Blender, Maya, etc.O Unity trabalha com os formatos FBX, 3DS,
OBJ...;Meshs podem ser animadas via script;
Exemplo de Mesh(em destaque)
Sites com modelos gratuitosO site do Unity:
RecursosTutoriais:
•Jogo de carro, Plataforma 3D, Plataforma 2D, FPS, Animação.
Projetos Exemplo:•FPS, Customização de Personagens
http://www.turbosquid.com/Search/3D-Models/free/fbx
http://www.open3dproject.org/...
*
Tipos de componentesFísica Baseado no engine de física PhysX (Nvidia);
Rigidbody: Objeto que age sobre o controle da física;
Constant Force: força constante; Colliders:
Geometrias básicas de colisão;Box, Sphere, Capsule, Mesh, Wheel (roda),
Raycast; Joints:
Junções;Restrições no grau de liberdade;
Tipos de componentesHinge JointSimulação de dobradiça;
Tipos de componentesSpring JointSimulação de mola;Distância máxima de separação e
retorno à posição original;
Tipos de componentesFixed JointConexão entre 2 corpos;Similar à hierarquia de
transformação;Útil quando os corpos podem ser
desconectados durante a simulação;
*
Scripts JavaScript, C# e Boo;Criação em Assets > Create;Scripts são associados a Game Objects
como componentes;
Alguns eventos importantes
Update: executada uma vez por frame;FixedUpdate: chamada de tempos em
tempos em um intervalo fixo (física);OnCollisionEnter: chamado quando
ocorre a colisão;
Referências a componentes
transform: posicionamento, rotação e escala;
rigidbody: corpo rígido;animation: controle dos ciclos de
animação;.renderer: exibição do componente
em cena;audio: fonte de audio;collider: geometria de colisão;
A seguir, alguns fragmentos de códigos usando o Unity
4011/04/23
ExemploFaz um objeto girar
var velocidade = 5.0;
function Update ()
{
print("Olá, Mundo");
transform.Rotate(0, velocidade*Time.deltaTime, 0);
}
ExemploMove a posição a partir do teclado
function Update ()
{
transform.Translate(Input.GetAxis("Horizontal"),
0,
Input.GetAxis("Vertical"));
}
ExemploOlha para um alvo
var alvo : Transform;
function Update ()
{
transform.LookAt(alvo);
}
PrefabsPrefabs são
objetos reutilizáveis armazenados na Project View;
Funcionam como modelos de objetos;
ExemploCria um novo objeto – Instantiate
var novoObjeto : Transform;
function Update ()
{
if(Input.GetButtonDown("Fire1"))
{
Instantiate(novoObjeto,
transform.position, transform.rotation);
}
}
Exemplo Carrega outro nível
Application.LoadLevel("Nome nivel");
ExemploEnvia uma mensagem para um outro objeto
// O outro objeto deve possuir uma função chamada // AplicarDano function OnCollisionEnter (collision : Collision) {
collision.gameObject.SendMessage("AplicarDano"); }
ExemploDestruir o objeto atual
function AplicarDano() {Destroy(gameObject);
}
4811/04/23
*