Menu
CoddyTech

O Corredor

Parte da seção Noções básicas de scripting no Unity do Journey de Unity da Coddy. Lição 60 de 67.

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 partida. O jogo inteiro está em um único script, Runner, que ganha um recurso em cada lição: movimentação, blocos caindo, remoção deles, a colisão e uma pontuação.

O primeiro recurso é a movimentação 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. O lugar em que o clamp é aplicado importa. Este medidor de carga enche enquanto a barra de espaço 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 fosse aplicado primeiro, o valor poderia terminar o quadro um passo além do limite, e a barra seria desenhada a partir desse 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.

challenge icon

Desafio

Médio

Comece Dodge the Blocks com o corredor. O Inspector atribui ao script Runner os valores de speed (6) e laneEdge (4).

  • As setas para a esquerda e para a direita movem o corredor ao longo do eixo x a speed unidades por segundo.
  • Seu x nunca fica abaixo de -laneEdge nem acima de laneEdge, então ele permanece na pista.

Pressione Jogar, clique no jogo e corra até as duas extremidades da pista; em seguida, clique em 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 na pista
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Noções básicas de scripting no Unity