Noite de Sobrevivência
Parte da seção Criando jogos de verdade do Journey de Unity da Coddy. Lição 56 de 56.
Um sobrevivente está em um campo escuro, e morcegos vêm atrás dele a noite toda, um novo a cada poucos segundos, surgindo de um dos quatro cantos do campo. Cada morcego voa diretamente em direção ao sobrevivente, e o primeiro a alcançá-lo encerra a noite. Um relógio no topo conta os segundos até o amanhecer: sobreviva até lá e você vence. Um botão Pausar congela tudo e, quando a noite termina, Jogar novamente inicia uma nova noite.
O script Player, que movimenta o sobrevivente com a ação Move, está escrito. Escreva GameManager e Bat.
Desafio
DifícilO Inspector fornece GameManager nightLength (15), spawnEvery (2), batPrefab, spawnPoints (os quatro cantos), dawnText, pauseButton, pausePanel, endPanel, endText e restartButton.
- Ele é um singleton (
public static GameManager Instance) e tem umpublic enum Stateaninhado comPlaying,Paused,WoneLost, além de umpublic State state. A noite começa em Playing. - Enquanto estiver em Playing: os segundos restantes diminuem a partir de
nightLength, exibidos arredondados para cima, comoDawn in 12; a cadaspawnEverysegundos, um morcego aparece em um dosspawnPoints, escolhido aleatoriamente. Quando o tempo acaba, a noite é vencida. pauseButtonalterna entre Playing e Paused. Paused para o tempo do jogo (Time.timeScale0) e mostrapausePanel; ao voltar para Playing, o tempo recomeça e o painel é ocultado. Em Won ou Lost, não faz nada.- Um
Lose()público faz com que uma noite em Playing seja perdida. - Won e Lost param o tempo do jogo e mostram
endPanelcomendTextexibindoYou survived the night!ouThe bats got you. restartButtoninicia uma nova noite carregando a cena novamente.
O Inspector fornece Bat speed (2) e reach (1). Enquanto a noite estiver em Playing, um morcego voa em direção ao jogador (marcado com a tag Player) a speed, mantendo a própria altura. Quando chega a uma distância menor que reach do jogador no plano do chão, chama Lose().
Pressione Play e tente sobreviver até o amanhecer; depois, clique em Check.
Experimente você mesmo
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;
public class GameManager : MonoBehaviour
{
public float nightLength = 15f;
public float spawnEvery = 2f;
public GameObject batPrefab;
public Transform[] spawnPoints;
public TMP_Text dawnText;
public Button pauseButton;
public GameObject pausePanel;
public GameObject endPanel;
public TMP_Text endText;
public Button restartButton;
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Criando jogos de verdade
1Texto na tela
Canvas e textoExiba a pontuaçãoFormate númerosUm cronômetro regressivoRevisão: velocímetro4Cenas e Fases
Carregar uma CenaReiniciar a FasePróxima FaseManter entre CenasRevisão: Seleção de Fases10Projeto: Jogo de Plataforma 3D
O PercursoPlataformas Móveis2Botões e telas
Botões e onClickLambdasConectando no InspectorPainéis ligados e desligadosBarras de vidaRevisão: Loja de melhorias5Salvando com PlayerPrefs
Salvar um númeroCarregar com um valor padrãoRecordeSalvar configuraçõesRevisão: Moedas no banco