As torres não estão sendo instanciadas. Ocorre algum erro na função "DisparaRaioDaCameraAteUmPonto". O erro está no "Ray raio = Camera.main.ScreenPointToRay(pontoInicial);", segundo o console do Unity.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Jogo : MonoBehaviour
{
[SerializeField] private GameObject torrePrefab;
private void Update()
{
if(ClicouComOButaoPrimario())
{
ConstroiTorre();
}
}
private bool ClicouComOButaoPrimario()
{
return Input.GetMouseButtonDown(0);
}
private void ConstroiTorre()
{
Vector3 posicaoDoClique = Input.mousePosition;
RaycastHit elementoAtingidoPeloRaio = DisparaRaioDaCameraAteUmPonto(posicaoDoClique);
if (elementoAtingidoPeloRaio.collider != null)
{
Vector3 posicaoDeCriacaoDaTorre = elementoAtingidoPeloRaio.point;
Instantiate(torrePrefab, posicaoDeCriacaoDaTorre, Quaternion.identity);
}
}
private RaycastHit DisparaRaioDaCameraAteUmPonto(Vector3 pontoInicial)
{
Ray raio = Camera.main.ScreenPointToRay(pontoInicial);
RaycastHit elementoAtingidoPeloRaio;
float comprimentoMaximoDoRaio = 100.0f;
Physics.Raycast(raio, out elementoAtingidoPeloRaio, comprimentoMaximoDoRaio);
return elementoAtingidoPeloRaio;
}
}