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