Aula 3 - 2ªParte
Inscrever no Unity

Agora podem jogar em casa

Aula passada?



RigidBody 2D
Adicionamos o Jerry

O Jerry mexe para o lado

Lembram-se disto?
float x = Input.GetAxisRaw ("Horizontal");rd.velocity = new Vector2 (x * velocity, rd.velocity.y);rd = GetComponent<Rigidbody2D> ();

float x = Input.GetAxisRaw ("Horizontal");?
?
float x = Input.GetAxisRaw ("Horizontal");X
Número Decimal
Exemplo:
X = 1,5
float x = Input.GetAxisRaw ("Horizontal");Tudo o que pode ser usado pelo jogador para jogar
float x = Input.GetAxisRaw ("Horizontal");Tudo o que pode ser usado pelo jogador para jogar



float x = Input.GetAxisRaw ("Horizontal");
x = 0

x = 1

x = -1
public Rigidbody2D rd;rd.velocity = new Vector2 (x * velocity, rd.velocity.y);RigidBody2D = Corpo Rígido em 2 Dimensões
Aplicam-se as leis da gravidade!!

public Rigidbody2D rd;rd.velocity = new Vector2 (x * velocity, rd.velocity.y);
Velocidade do Jerry
public Rigidbody2D rd;rd.velocity = new Vector2 (x * velocity, rd.velocity.y);

public Rigidbody2D rd;rd.velocity = new Vector2 (x * velocity, rd.velocity.y);

x = Direção
-1 = ESQUERDA
0 = PARADO
1 = DIREITA
velocity = velocidade do jerry
public Rigidbody2D rd;rd.velocity = new Vector2 (x * velocity, rd.velocity.y);

Mesma velocidade em que estava
rd = rigidbody
rd.velocity = velocidade
Aula passada?

O Jerry deixou de rodar!!


Sabemos quando o Utilizador carregou no espaço

if(Input.GetKeyDown(KeyCode.Space)) {
// Carregaste No Espaço!!!
}
if(Input.GetKeyDown(KeyCode.Space)) {
// Carregaste No Espaço!!!
}if(Input.GetKeyDown(KeyCode.Space)) {
// Carregaste No Espaço!!!
}Se(Carregares na Tecla Espaço) {
-> Carregaste no espaço
-> É para saltar
}
if(Input.GetKeyDown(KeyCode.Space)) {
// Carregaste No Espaço!!!
}Vamos programar o Salto!!
if(Input.GetKeyDown(KeyCode.Space)) {
// Carregaste No Espaço!!!
rgd.velocity = new Vector2(rgd.velocity.x, velocidadePulo);
}
public float velocidade;
public float velocidade;
public float velocidadePulo;


Sempre que carregamos no espaço ele continua a saltar!

Quando salto?
-
Carreguei no Espaço

Quando salto?
-
Carreguei no Espaço
-
Ou Estou no Chão


Quando salto?
-
Carreguei no Espaço
-
Ou Estou no Chão
-
Ou Estou no Ar mas não dei duplo salto



Quando salto?
-
Carreguei no Espaço
-
Ou Estou no Chão
-
Ou Estou no Ar mas NÃO dei duplo salto



-
Ou Estou no Ar e já dei duplo salto
Quando salto?
-
Carreguei no Espaço
-
Ou Estou no Chão
-
Ou Estou no Ar mas NÃO dei duplo salto



-
Ou Estou no Ar e já dei duplo salto
Bora Programar!!

public float velocidade;
public float velocidadePulo;
-
Está no Chão?
-
Pode dar o salto duplo?
public float velocidade;
public float velocidadePulo;
-
Está no Chão?
-
Pode dar o salto duplo?



public float velocidade;
public float velocidadePulo;
-
Está no Chão?
-
Pode dar o salto duplo?

public float velocidade;
public float velocidadePulo;
-
Está no Chão?
-
Pode dar o salto duplo?

public float velocidade;
public float velocidadePulo;
-
Está no Chão?
-
Pode dar o salto duplo?

public float velocidade;
public float velocidadePulo;
= Verdadeiro = True
= Falso = False
public float velocidade;
public float velocidadePulo;
= Verdadeiro = True
= Falso = False
Bool = Boolean = Booleano
public float velocidade;
public float velocidadePulo;
private bool noChao;
private bool podePuloDuplo;= Verdadeiro = True
= Falso = False
Bool = Boolean = Booleano
public float velocidade;
public float velocidadePulo;
private bool noChao;
private bool podePuloDuplo;
Sensor do chão


Camada do Chão
(Layer do Chão)
public float velocidade;
public float velocidadePulo;
public Transform verificarChao
public LayerMask chao
private bool noChao;
private bool podePuloDuplo;
Sensor do chão


Camada do Chão
(Layer do Chão)
public float velocidade;
public float velocidadePulo;
public Transform verificarChao
public LayerMask chao
private bool noChao;
private bool podePuloDuplo;
Sensor do chão


Camada do Chão
(Layer do Chão)
Transform -> Posição no ecrã
LayerMask -> Camada

if(Input.GetKeyDown(KeyCode.Space)) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
}
noChao?
True
False
noChao = Physics2D.OverlapCircle (verificarChao.position, 0.2f, chao);
if(Input.GetKeyDown(KeyCode.Space)) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
}OverlapCircle = Intersectar círculo
noChao = Physics2D.OverlapCircle (verificarChao.position, 0.2f, chao);
if(Input.GetKeyDown(KeyCode.Space)) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
}OverlapCircle = Intersectar círculo
Verifica se houve colisões com o chão

noChao = Physics2D.OverlapCircle (verificarChao.position, 0.2f, chao);
if(Input.GetKeyDown(KeyCode.Space)) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
}Physics2D.OverlapCircle (verificarChao.position, 0.2f, chao);Deteta colisões num círculo:
Raio = 0.2f
Camada do círculo
Posição do centro
noChao = Physics2D.OverlapCircle (verificarChao.position, 0.2f, chao);
if(Input.GetKeyDown(KeyCode.Space)) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
}Physics2D.OverlapCircle (verificarChao.position, 0.2f, chao);Deteta colisões num círculo:
Camada do círculo
Posição do centro

noChao = Physics2D.OverlapCircle (verificarChao.position, 0.2f, chao);
if(Input.GetKeyDown(KeyCode.Space)) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
}Verificar se está no chão

noChao = Physics2D.OverlapCircle (verificarChao.position, 0.2f, chao);
if(Input.GetKeyDown(KeyCode.Space)) {
if(noChao) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
}
}Verificar:
Se está no chão
-> Salta

noChao = Physics2D.OverlapCircle (verificarChao.position, 0.2f, chao);
if(Input.GetKeyDown(KeyCode.Space)) {
if(noChao) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
}
}Se está no chão
-> Salta
Caso Contrário
->?
noChao = Physics2D.OverlapCircle (verificarChao.position, 0.2f, chao);
if(Input.GetKeyDown(KeyCode.Space)) {
if(noChao) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
} else {
}
}Se está no chão
-> Salta
Caso Contrário
->?
noChao = Physics2D.OverlapCircle (verificarChao.position, 0.2f, chao);
if(Input.GetKeyDown(KeyCode.Space)) {
if(noChao) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
} else {
}
}Se está no chão:
-> Salta
Caso Contrário:
->?
Se pode dar duplo salto:
-> Salta
-> Já não pode dar duplo salto
noChao = Physics2D.OverlapCircle (verificarChao.position, 0.2f, chao);
if(Input.GetKeyDown(KeyCode.Space)) {
if(noChao) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
} else {
if(podeDuploSalto) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
podeDuploSalto = false;
}
}
}Se está no chão:
-> Salta
Caso Contrário:
->?
Se pode dar duplo salto:
-> Salta
-> Já não pode dar duplo salto
noChao = Physics2D.OverlapCircle (verificarChao.position, 0.2f, chao);
if(Input.GetKeyDown(KeyCode.Space)) {
if(noChao) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
} else {
if(podeDuploSalto) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
podeDuploSalto = false;
}
}
}Se estiver no Chão:
-> Pode dar duplo salto
noChao = Physics2D.OverlapCircle (verificarChao.position, 0.2f, chao);
if(noChao) {
podeDuploSalto = true;
}
if(Input.GetKeyDown(KeyCode.Space)) {
if(noChao) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
} else {
if(podeDuploSalto) {
rgd.velocity = new Vector2 (rgd.velocity.x, velocidadePulo);
podeDuploSalto = false;
}
}
}Se estiver no Chão:
-> Pode dar duplo salto
O código terminou....

Lembram-se da camada Chão?

Lembram-se da camada Chão?

Inspector --> Layer [Default] --> Add Layer

User Layer 8 --> [escrevam] chão

Agora, tudo o que é chão tem de ter a layer do chão
Comecemos com a Relva


Agora, tudo o que é chão tem de ter a layer do chão
E com a Terra


Falta-nos adicionar o sensor do jerry

Falta-nos adicionar o sensor do jerry


Botão direito do rato [jerry_0] -> Create Empty
Falta-nos adicionar o sensor do jerry

Mudamos o nome para -> verificarChao -> por na base do jerry

Temos de mudar os valores do script no inspector do Jerry


Arrastam o verificarChao que criamos da hierarquia
Mudam a layer

Experimentem correr!

Mas Espera!!!

O Jerry fica colado às paredes

Material




Assets -> Botão direito do rato -> Create -> Folder -> Physics Material
Criamos uma pasta no unity
Criamos um material dentro da pasta

Dentro da pasta criada -> Botão direito do rato ->
-> Create -> Physics2D Material -> escorregadio (nome)
Se carregarem no escorregadio
No vosso lado direito [Inspector]

Se carregarem no escorregadio
No vosso lado direito [Inspector]

Fricção
Saltitona


Última coisa!
Carregam no Jerry -> Inspetor[Vosso lado direito] -> Circle Collider
-> Material -> Carregam na bolinha -> Escorregadio

Queremos que o Jerry dispare projécteis

Aula 3 - 2ªParte
By Bruno Machado
Aula 3 - 2ªParte
- 741