Menu
CoddyTech

Bases de Construção

Lição 7 de 25 do curso Jogo de Unity: Defesa de Torres da Coddy.

O jogador constrói torres clicando nas plataformas de construção cinzas. Um clique é um ponto na tela, então ele se torna um raio: Camera.main.ScreenPointToRay retorna o raio da câmera que passa por esse ponto, e Physics.Raycast informa o primeiro colisor atingido, aquele que está sob o mouse.

Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
if (Physics.Raycast(ray, out RaycastHit hit))
{
    Debug.Log("Clicked " + hit.collider.name);
}

O raio também atinge o chão, o caminho e as árvores. hit.collider.TryGetComponent(out BuildPad pad) verifica se o objeto atingido é uma plataforma, então os outros cliques não fazem nada. Todas as cenas aqui usam o Input System, então Mouse.current lê o mouse (using UnityEngine.InputSystem;).

challenge icon

Desafio

Médio

Clique em um espaço de construção para construir uma torre Arrow nele.

  1. Em BuildPad, adicione public Tower tower;.
  2. Em BuildManager, adicione [SerializeField] private Tower towerPrefab;. Em Update, quando Mouse.current.leftButton.wasPressedThisFrame for verdadeiro, lance um raio a partir do mouse.
  3. Se o raio atingir um BuildPad cujo tower seja null, defina pad.tower = Instantiate(towerPrefab, pad.transform.position, Quaternion.identity);.

Pressione “Jogar” e clique nos espaços de construção: haverá uma torre em cada um. Depois, clique em “Verificar”.

Experimente você mesmo

using UnityEngine;

// Vem depois: clicar nas plataformas de construção para posicionar torres, a loja e o painel de torres.
public class BuildManager : MonoBehaviour
{
}

Todas as lições de Jogo de Unity: Defesa de Torres

Pratique por conta própria: Playground de Unity