Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Está retornando uma exceção na hora em que eu crio um array para armazenar os inimigos instanciados.

Está dúvida já apareceu aqui, porém, a pessoa que fez a pergunta disse que já solucionou, porém não postou mais nada. Está retornando essa exceção: " IndexOutOfRangeException: Array index is out of range. Missil.Start () (at Assets/Scripts/Missil.cs:14)" Se eu não me engano essa exceção acontece pois não existe um GameObject naquela posição do vetor, por isso já tente colocar um 'if' para apenas adicionar no alvo se houver uma Game object com a tag "Inimigo", dessa maneira:

private void Start()
    {
        GameObject[] inimigos = GameObject.FindGameObjectsWithTag("Inimigo");
        if (inimigos[0] != null)
        {
            alvo = inimigos[0];
            AutoDestroyDepoisDeSegundos(5);
        }
    }

Porém mesmo assim, continua dando o mesmo erro.

Segue como esta o meu script sem esse 'if':

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Missil : MonoBehaviour {

    private float velocidade = 10;
    GameObject alvo;
    [SerializeField] private int pontosDeDano;

    private void Start()
    {
        GameObject[] inimigos = GameObject.FindGameObjectsWithTag("Inimigo");
        alvo = inimigos[0];
        AutoDestroyDepoisDeSegundos(5);
    }

    // Update is called once per frame
    void Update () {
        Anda();
        if(alvo != null)
        {
            AlteraDirecao();
        }  
    }
    private void Anda()
    {
        Vector3 posicaoAtual = transform.position;
        Vector3 deslocamento = transform.forward * Time.deltaTime * velocidade;
        transform.position = posicaoAtual + deslocamento;
    }
    private void AlteraDirecao()
    {
        Vector3 posicaoAtual = transform.position;
        Vector3 posicaoDoAlvo = alvo.transform.position;
        Vector3 direcaoDoAlvo = posicaoDoAlvo - posicaoAtual;
        transform.rotation = Quaternion.LookRotation(direcaoDoAlvo);
    }

    private void AutoDestroyDepoisDeSegundos(float segundos)
    {
        Destroy(this.gameObject, segundos);
    }

    private void OnTriggerEnter(Collider elementoColidido)
    {   
        if (elementoColidido.CompareTag("Inimigo"))
        {
            Destroy(this.gameObject);
            Inimigo inimigo = elementoColidido.GetComponent<Inimigo>();
            inimigo.RecebeDano(pontosDeDano);

        }

    }
}

Se eu conseguir achar a solução, eu posto aqui

1 resposta
solução!

Já resolvi! É só assistir o resto da aula. Na vídeo aula também da esse problema, mas mesmo assim é criado os inimigos, no meu caso não estava nem criando os inimigos, por isso estranhei.