Construção de jogos com o motor Unity3D
Eduardo Bonfandini
7º CCTEC - 2013 - Minicurso
Unity3D
Quem conhece a Unity3d?
http://portuguese.unity3d.com/
Objetivos
• Demonstrar a Unity3d• Informar suas capacidades• Ensinar o uso básico da ferramenta• Criar motivação para o uso.• Se divertir.
Apresentação
de vídeos
Tópicos gerais do minicurso
1. Introdução2. Básico3. Script4. Compilando5. Outras coisinhas legais.
PARTE 1
Introdução
http://unity3d.com
• Rica em funcionalidades.• Um motor (engine).• É um ambiente de desenvolvimento.• Engine e Ide 100% integrados.• Desenvolvido para criação de conteúdo 3D
interativos.• Provê “na caixa” uma listagem completa, para
alcançar conteúdo de alta qualidade e alta performance.
http://unity3d.com
• Pública para multi-plataformas.
• Reduz tempo de desenvolvimento,
• Reduze esforço e custo para fazer jogos.
• Comunidade ativa
• Ótima documentação• Fácil
Multi plataforma
• Pc• Mac• Web• Chrome• Wii• PS3• Xbox 360• Android• iPhone e iPad
Multi plataforma
• Versão 4:• Linux• Flash
• Editor:• Windows• Mac
Rica em funcionalidades.
• Códigos sem dor (Js, C#, Boo)• Controle preciso de qualidade• Previews instantâneos• 100 shaders prontinhos possibilidade de criação• Sombras em tempo real ou confeitadas (baked)
Rica em funcionalidades.
• Linear Space Lighting HDR
• Realtime Shadows
• Sun Shafts & Lens Effects
• Ambient Occlusion
• Lightmapping
Rica em funcionalidades.
• Interação com praticamente todos modeladores
• Blender, 3dStudio, Maya, SketchUp
Suporte a arquivos
Terrenos
• Terrenos:• Sculpt Like a Master• Trees, Bushes, Rocks, Grass• Detail Texture Painting• Lightmaps Integrated• Tree Creator
Exemplos
Física
• NVIDIA® PhysX®• Cloth• Soft Bodies• Rigidbodies
• Ragdolls• Joints• Cars• Materials
Som (F-mod)
• 3D ou 2D• Poder do Fmod• Filtros• High/Low pass• Distorção• Echo• Reverb
http://www.fmod.org/
Código
• Javascript (UnityScript)• C#• BOO ( Like python)• Integrado com IDE’s• Modifica objetos• Modifica editor• Novas funcionalidades• Código multi-plataforma• Código especifico
Internet
• Estados• Tempo real• Chamdas remotas
• Conexão com servidores• Web Browser• Conectividade web
Rica em funcionalidades.
• Prefabs• Asset manager
• Asset store• Customização
Partículas
• Partículas para todos os gostos• Particle 2d
Mão na massa
PARTE 2
Básicos
Interface geral
Editor Preview
ProjetoCena
Inspector
Conceitos
• Game Object • Create Other• Componentes• Colliders• Camera
PROJETO 1
MINI PROJETO COISAS AZUIS
NO EDITOR
Prefabs
• Prefabs são legais• Conteúdo compartilhado• Otimização• Mecha um e altere todos (ou não)• Aparecem no editor em azul
JAVASCRIPT
• UnityScript = Bom, bonito e barato• Similar ao JS do browser• Um objeto pode ter diversos scripts e eles
podem se comunicar
Uma variável é uma variável
• Seja no script, seja no editor
Esqueça OO clássico
• Orientação a objetos é legal• Coisas diferentes, conceitos diferentes• Script modulares, cada um com sua tarefa• Veja cada script como uma classe• Veja um script em um objeto como uma
instancia
Objetos/Variáveis
• gameobject• Transform• Ridigbody• Collider• audio• ...• ...• ...• Use a ide para o autocomplete
Métodos
• Start• Update• FixedUpdate• OnCollisionEnter• http://docs.unity3d.
com/Documentation/ScriptReference/Collider.OnCollisionEnter.html
• OnCollisionStay• OnCollisionOut• E MUITO MAIS! ...... (hehehe)
Criar caixa ao clique
function Update ()
{
if ( Input.GetMouseButton(0))
{
var selected = Random.Range(0,objects.Length*100) / 100;
//Debug.Log(selected);
var box = objects[selected];
var boxClone = GameObject.Instantiate(box,box.transform.position,Quaternion.identity);
}
...
Mover a câmera
var horizontal = Input.GetAxis ("Horizontal");
if ( horizontal > 0 )
{
transform.localPosition.x +=1;
}
else if ( horizontal < 0 )
{
transform.localPosition.x -=1;
}
Compilando
Não esquece de adicionar as cenas
Texturas por plataforma
Configurações
Projeto 2
Terreno
Terreno
5 minute project
Terrain + Asset Store
Belezinha?
PROJETO 3
Playground
Scene 1
Scene 2
Chão (plane, texture, bumpmap)
Manha de Gimp 1
• Tornar encaixável – Juntas perfeitas
Caixa (component,rigidbody)
Caixa
Luzes
• Direcional• Ponto• Holofote ( SpotLight )• Area
Bola ( physics material)
Árvore (cylinder)
Personagens e Scripts
• Character controller• PushBodies (script)• http://docs.unity3d.
com/Documentation/ScriptReference/MonoBehaviour.OnControllerColliderHit.html
• MouseGrab (tag)• http://answers.unity3d.
com/questions/168060/how-do-you-pick-up-objects.html
PARTE FINAL
Tópicos para discussão
Dúvidas, sugestões e reclamações?
Tópicos para discussão
• Skybox• IsTrigger• Partículas• Asset Store• SVN (Version control = Meta files)• Plane simples
Fim?
• Física “avançada” (pêndulo, tecidos)• Terrenos• Ragdool• Modelos 3d• Scripts do Editor• Baked Lights• Animação 2d
Fim?
• Game Design• Level design• Character design• Sketchs• Layouts• Prototipagem