500 likes | 645 Views
Bruno C. de Paula. Introdução ao. Aquecimento para a Global Game Jam. Resumo. Vamos conhecer a engine Unity 3D Focaremos nas principais ferramentas e recursos que o Unity disponibiliza. O que é o Unity?. Unity é um ambiente multiplataforma de desenvolvimento de jogos;
E N D
Bruno C. de Paula Introdução ao Aquecimento para a Global Game Jam
Resumo Vamos conhecer a engine Unity 3D Focaremos nas principais ferramentas e recursos que o Unity disponibiliza
O que é o Unity? • Unity é um ambiente multiplataforma de desenvolvimento de jogos; • Suporte a: Windows / MacOS / Web / Wii e Wii Ware / iPhone; • Breve: Android / Xbox 360 e PS3.
Características do UnityEditor de Níveis • Fortemente integrado com a execução do jogo;
Características do UnityEditor de Níveis • Suporte a Drag & Drop e customização;
Características do UnityEditor de Níveis • Editor de terrenos e lightmaps;
Características do UnityGráficos • Suporte a Direct3D 9 e OpenGL;
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.
Características do UnityShaders • Efeitos de Glow, Blur, Noise, etc
Características do UnityFísica / PhysX • Suporte a corpos rígidos; • Junções; • Ragdolls; • Wheel Collider para jogos de carro;
Características do UnityScripting • Linguagens de Scripting: • JavaScript (muuuito rápido, palavra!); • C# (Mono); • Boo (similar a Python).
Interface básica Hierarquia Cena Inspetor Projeto Jogo
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;
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
Assets Arquivos 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.
Componente Transform • Posicionamento (x, y, z) [W], rotação (ângulo) [E] e escala [R];
Local Space e World Space • X, Y e Z são em relação ao elemento pai;
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 ObjectLuzes Point 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 ObjectLuzes Directional 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 ObjectCamera • Capturam e mostram o mundo ao jogador;
Tipos de Game ObjectGUI Text e GUI Texture Texto e Imagens em 2D; Útil para criação da HUD;
Tipos de Game ObjectParticle System • Sistema de Partículas, formado por: • Emissor, animador e renderizador;
Tipos de Game ObjectRagdoll Simulação no estilo “boneco de pano”; Útil para “representação de mortos”; Ver video: http://www.youtube.com/watch?v=g0lTE4sCyKI *
Componentes Podem ser associados a Game Objects; Definem: Comportamento; Aparência; Podem ser scripts; Vamos analisar alguns.
Tipos de ComponentesMesh Cada 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;
Sites com modelos gratuitos O site do Unity: Recursos Tutoriais: 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 Joint Simulação de dobradiça;
Tipos de componentesSpring Joint Simulação de mola; Distância máxima de separação e retorno à posição original;
Tipos de componentesFixed Joint Conexã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;
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); }
Prefabs Prefabs 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); • }
Conclusões • O Unity pode ser útil em uma Game Jam pois: • É fácil de integrar o trabalho de um programador e de um artista; • Já vem com funcionalidades de física , editor de ambientes, testes de colisão, etc; • Cuidados! • Nem sempre um jogo 3D é fácil de se balancear;
Mais material? • http://www.brunocampagnolo.com/engines2010/