Dev. Jogos Mobile com Unity

Propaganda
Desenvolvimento de Jogos
Mobile com Unity
Raphael Marques
Unity 3D
• Game Engine completa e intuitiva
• Ecossistema completo
– Ferramenta
– Forum
– Tutoriais
– Loja de assets
• Multiplataforma
• 100% Gratuita!!! (Versão Personal)
– Versão Professional tem adição de outros serviços
Funcionamento do Minicurso
• Demonstração do Unity (para jogos 2D)
• Alguns conceitos do Unity
• Jogo Space Shooter
• Jogo de Plataforma
MUITA ATENÇÃO
QUANDO FOR UM
PASSO-A-PASSO!!!
Elementos básicos do Unity
• Asset
– qualquer arquivo do seu projeto
• Scene (cena)
– arquivo de cada fase do seu jogo
• GameObject
– cada elemento da cena
• Component
– cada parte de um GameObject
Interface do Unity
• Dividida em abas ajustáveis:
– Project: arquivos (assets) do projeto
– Hierarchy: objetos da cena
– Inspector: atributos dos objetos
– Scene: edição visual da cena
– Game: visual do jogo rodando
– Console: debug
Programação
Orientada a Objetos
Carro
Personagem
- posição : (x,y,z)
- rotação: (x,y,z)
- peso : float
- velocidade : float
- aceleração : float
+ acelerar()
+ frear()
+ ligar()
+ desligar()
+ virar()
- posição : (x,y,z)
- rotação: (x,y,z)
- velocidade : float
- força : float
- vidas : int
+ andar()
+ pular()
Checkpoint
- posição : (x,y,z)
- rotação: (x,y,z)
- salvar()
Parede
- posição : (x,y,z)
- rotação: (x,y,z)
- largura : float
- altura : float
Programação
Orientada a Componentes
Carro
Personagem
Checkpoint
Parede
GameObject
GameObject
GameObject
GameObject
Componente
Componente
Componente
Componente
Componente
Componente
Componente
Componente
Componente
Programação
Orientada a Componentes
Carro
Personagem
Checkpoint
Parede
GameObject
GameObject
GameObject
GameObject
Transform
Transform
Transform
Transform
Collider
Collider
Collider
Collider
Renderer
Renderer
SalvarJogo
Renderer
Andar
Andar
Checkpoint
Rigidbody
Rigidbody
Teclado
Pular
Carro
Teclado
Personagem
Principais componentes
•
•
•
•
•
•
•
•
•
Transform: posição, rotação e escala
Renderer: desenha um modelo ou imagem na tela
Collider: forma física do objeto pra detecção de colisão
Rigidbody: objeto físico com massa, velocidade, etc...
Camera: controla o que é visto da cena
AudioSource: emite som
Canvas: desenha elementos de interface
Animator: controla animações
Scripts: lógica específica: Andar, Pular, Checkpoint,
etc...
Scripts (C#)
Coisa
GameObject
public class MeuScript : MonoBehaviour {
Transform
public int x;
Rigidbody2D
public Transform t;
MeuScript
int y;
void Start(){
Rigidbody2D rb = GetComponent<Rigidbody2D>();
rb.velocity = new Vector3(0, 10, 0);
}
void Update(){
if( Input.GetKeyDown(KeyCode.X) )
t.gameObject.SetActive(false);
}
}
Demonstração
Tipos de detecção de colisão
• Algum Rigidbody2D envolvido
• Trigger (algum trigger envolvido)
– OnTriggerEnter2D(Collider2D col)
– OnTriggerStay2D(Collider2D col)
– OnTriggerExit2D(Collider2D col)
Enter
• Collision (quando há efeito físico)
– OnCollisionEnter2D(Collision2D col)
– OnCollisionStay2D(Collision2D col)
– OnCollisionExit2D(Collision2D col)
• Mover diretamente o Transform pode
atrapalhar a detecção de colisão!
Stay
Stay
Exit
Elementos de um jogo
•
•
•
•
•
•
Visual (SpriteRenderer)
Organização (Hierarquia de objetos)
Estáticos (Collider)
Detectores (Trigger)
Móveis (Collider + Rigidbody)
Detectores Móveis (Trigger + Rigidbody)
Problema
• Essa demonstração é apenas uma forma de se
trabalhar no Unity.
• Pode ficar muito complexa, e não se utiliza bem a
orientação a componentes.
• Orientação a Componentes foca na REUTILIZAÇÃO!!!
• Então vamos usar SCRIPTS REUTILIZÁVEIS!
Alguns Scripts...
• Mover:
– altera a velocidade de um Rigidbody2D
• Creator:
– cria cópias de um objeto
• RandomPos:
– posiciona aleatoriamente entre duas posições
• ScriptActions:
– métodos úteis de qualquer objeto
• FollowTarget:
– segue outro objeto
Alguns Scripts...
• TimerTrigger:
– lança eventos de tempos em tempos
• GenericTrigger:
– lança eventos quando um evento MonoBehaviour
ocorre (Start, Update, OnTriggerEnter2D, etc)
• KeyboardTrigger:
– lança eventos quando uma tecla é utilizada
• AxisTrigger:
– lança eventos com o valor do eixo Horizontal e Vertical
do input
Exemplo: FollowTarget
public class FollowTarget : MonoBehaviour {
public Transform target;
void LateUpdate () {
Vector3 pos = this.transform.position;
pos.x = target.position.x;
pos.y = target.position.y;
this.transform.position = pos;
}
}
Exemplo: Creator
public class Creator : MonoBehaviour {
public GameObject prefab;
public bool useRotation;
public void Create(){
if(useRotation){
Instantiate(prefab, this.transform.position, this.transform.rotation);
}else{
Instantiate(prefab, this.transform.position, Quaternion.identity);
}
}
}
Primeiro Jogo: Space Shooter
123
Primeiro Jogo: Space Shooter
• Requisitos:
– Nave que se movimenta e atira pra cima
– Inimigos se movem e atiram para baixo
– Inimigos são criados no topo da tela
– Se um tiro do Inimigo atingir a Nave, perdeu!
– Se um tiro da Nave atingir o Inimigo, destrói o
Inimigo e ganha ponto
Primeiro Jogo: Space Shooter
• Sprites:
Primeiro Jogo: Space Shooter
• Criem um novo projeto 2D
• Ajustem o Layout para “Default”
• Com o projeto aberto, abram esse arquivo:
bit.ly/1cxQmj9
• Salve a cena vazia atual como “Nave”
Vamos ao Unity...
Segundo Jogo: Plataforma
Segundo Jogo: Plataforma
• Requisitos:
– Personagem andando pulando
– Animações
– Plataformas fixas no cenário
– Espinhos que tiram vida
– Forma fácil de montar cenário!
Segundo Jogo: Plataforma
Vamos ao Unity...
Links
• Gerador de Som
– www.bfxr.net/
• Gerador de Música
– www.earslap.com/page/otomata.html
• Sprites
– kenney.nl/assets
• Contato
– about.me/raphaelmarques
Download