Três pistas
Lição 1 de 20 do curso Jogo Unity: Pistas no Céu da Coddy.
Neste curso, você vai criar um jogo inteiro, um recurso por aula. Um corredor avança por uma estrada bem no alto. Barreiras, barras e muros vêm em sua direção, moedas se alinham nas pistas, e a estrada fica mais rápida quanto mais tempo você durar.
O projeto já tem quatro scripts: Runner no jogador, Road, GameManager e Coin. A maioria está vazia por enquanto e vai sendo preenchida aula por aula. Um quinto, CameraFit na câmera, já está pronto: ele amplia a visão em uma tela alta de celular para que as três pistas caibam, e você não precisará alterá-lo.
O corredor nunca avança. Ele só se move entre três pistas: esquerda, meio e direita. Mantenha a pista como um número inteiro, -1, 0 ou 1, e calcule onde ela fica no eixo x:
float targetX = lane * laneWidth;O corredor tem um CharacterController, então ele se move com controller.Move(motion): Move recebe a distância a percorrer neste quadro, não onde terminar. Para chegar a targetX, mova-se pela diferença entre esse valor e a posição atual do corredor:
float x = targetX;
Vector3 move = new Vector3(x - transform.position.x, 0f, 0f);
controller.Move(move);Mathf.Max(-1, lane - 1) é lane - 1, mas nunca menor que -1, então não há pista além da pista da esquerda.
Desafio
Fácil- Em
Runner.Update, quando A ou a seta para a esquerda for pressionada (Input.GetKeyDown), definalane = Mathf.Max(-1, lane - 1). - Quando D ou a seta para a direita for pressionada, defina
lane = Mathf.Min(1, lane + 1). - Em seguida, calcule
targetXe mova o corredor até lá comcontroller.Move, como acima. - Pressione “Jogar” e teste A e D.
Experimente você mesmo
using UnityEngine;
public class Runner : MonoBehaviour
{
public float laneWidth = 2.5f;
public int lane;
private CharacterController controller;
void Start()
{
controller = GetComponent<CharacterController>();
}
void Update()
{
// mude de faixa aqui
}
}
Todas as lições de Jogo Unity: Pistas no Céu
Pratique por conta própria: Playground de Unity