Menu
CoddyTech

O Corredor

Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 75 de 85.

Neste capítulo, você vai criar um jogo pequeno: Dodge the Blocks. Você controla um corredor em uma pista enquanto blocos caem do céu, e um único toque encerra a corrida. O jogo inteiro está em um único script, Runner, que ganha um recurso em cada lição: controle, blocos caindo, remoção deles, o impacto e uma pontuação.

O primeiro recurso é o controle que mantém o corredor na pista, usando Mathf.Clamp(value, min, max) de Catch the Star: ele retorna min quando o valor está abaixo do intervalo, max quando está acima e, caso contrário, o próprio valor. Onde o clamp é aplicado faz diferença. Este medidor de carga enche enquanto a tecla Space está pressionada, esvazia quando não está e nunca sai do intervalo de 0 a 10:

[SerializeField] private float charge = 0f;

void Update()
{
    if (Input.GetKey(KeyCode.Space))
    {
        charge += 4f * Time.deltaTime;
    }
    else
    {
        charge -= 2f * Time.deltaTime;
    }
    charge = Mathf.Clamp(charge, 0f, 10f);
    transform.localScale = new Vector3(0.5f, charge, 0.5f);
}

O clamp vem depois da alteração. Se o valor fosse limitado primeiro, ele poderia terminar o quadro um passo além do limite, e a barra seria desenhada usando esse valor. Mathf.Clamp também retorna um novo número em vez de alterar a variável que você passa, então atribua o resultado de volta à variável.

challenge icon

Desafio

Médio

Inicie Dodge the Blocks: conduza o corredor pela pista.

  1. Em Update(), copie transform.position para Vector3 p e adicione Input.GetAxisRaw("Horizontal") * speed * Time.deltaTime a p.x. O eixo bruto move em velocidade máxima imediatamente.
  2. Defina p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge); e, em seguida, transform.position = p;.

Pressione “Jogar”, clique no jogo e corra até as duas extremidades: o corredor para nas bordas. Depois, “Verificar”.

Experimente você mesmo

using UnityEngine;

public class Runner : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private float laneEdge = 4f;

    void Update()
    {
        // mova-se ao longo de x com as setas e depois mantenha x dentro da faixa
    }
}

Todas as lições de Fundamentos de Scripting no Unity

Pratique por conta própria: Playground de Unity