QUANDO TENTO COMPILAR,...
Assets/Script/Torre.cs(57,32): error CS0029: Cannot implicitly convert type Missil[]' to
Missil'
============= E AGORA ??? quem irá me ajudar ... observe o erro ...
veja, o script da minha Torre.cs
using UnityEngine;
using System.Collections;
public class Torre : MonoBehaviour {
[SerializeField] private float raioDeAlcance;
private float momentoDoUltimoDisparo;
[Range(0,3)]
public float tempoDeRecarga = 0.5f;
public GameObject missilPrefab; //projetilPrefab;
// Use this for initialization
void Start () {
// Atira ();
}
// Update is called once per frame
void Update ()
{
Inimigo alvo = EscolheAlvo ();
if (alvo != null) {
Atira (alvo); // a cada FRAME, é chamado o médoto Atira() produzindo vários míssil
}
}
private void Atira (Inimigo inimigo)
{
float tempoAtual = Time.time;
if (tempoAtual > momentoDoUltimoDisparo + tempoDeRecarga) {
momentoDoUltimoDisparo = tempoAtual;
//Instantiate (missilPrefab);
GameObject pontoDeDisparo = this.transform.Find ("CanhaoDaTorre/PontoDeDisparo").gameObject;
Vector3 posicaoDoPontoDeDisparo = pontoDeDisparo.transform.position;
/*
Instantiate (missilPrefab, posicaoDoPontoDeDisparo, Quaternion.identity);
//GameObject projetilObject =
//(GameObject)
Missil missil = missilPrefab.GetComponents<Missil>();
missil.DefineAlvo (inimigo);
*/
GameObject projetilObject = (GameObject) Instantiate (missilPrefab, posicaoDoPontoDeDisparo, Quaternion.identity);
Missil missil = projetilObject.GetComponents<Missil> ();
missil.DefineAlvo (inimigo);
}
}
private Inimigo EscolheAlvo() {
GameObject[] inimigos = GameObject.FindGameObjectWithTag ("Inimigo");
// alinha acima, captura todos os inimigos, a referência a ele (inimigo) ou seja a instância
foreach (GameObject inimigo in inimigos) {
// como saberemos em quel alvo atirar ?
if (EstaNoRaioDeAlcance (inimigo)) {
return inimigo.GetComponent<Inimigo>();
}
}
return null;
}
private bool EstaNoRaioDeAlcance(GameObject inimigo) {
Vector3 posicaoTorre = this.transform.position;
Vector3 posicaoTorreNoPlano = Vector3.ProjectOnPlane (posicaoTorre, Vector3.up);
// Vector3.up quer dizer um plano normnal, ou seja não inclinado, um PLANO perfeito
Vector3 posicaoInimigo = inimigo.transform.position;
Vector3 posicaoInimigoNoPlano = Vector3.ProjectOnPlane (posicaoInimigo, Vector3.up);
// Vector3.up quer dizer um plano normnal, ou seja não inclinado, um PLANO perfeito
float distanciaParaInimigo = Vector3.Distance (posicaoTorreNoPlano, posicaoInimigoNoPlano);
return distanciaParaInimigo <= raioDeAlcance;
}
}