Opa ! Que resposta rápida hehehe
Obrigado,
Sim, eu consegui visualizar melhor essa questão, e percebi alguns outros pontos que talvez possam ir para o StatusInimigo como TomarDano, já que lida com o status HP.
Eu fiz uma modificação agora no StatusInimigo:
public class ControlaStatusInimigo : ControlaStatus {
private float contadorVagar;
[HideInInspector]
public Vector3 posicaoRandom;
private ControlaInimigo controlaInimigo;
void Start()
{
controlaInimigo = GetComponent<ControlaInimigo>();
}
//posição aleatoria
public void PosicaoAleatoria()
{
contadorVagar -= Time.deltaTime;
if (contadorVagar < 0)
{
posicaoRandom = controlaInimigo.PosicaoRandom();
contadorVagar += tempoEntrePosicoesAleatorias;
}
}
}
A classe Status só tem a variável:
public class ControlaStatus : MonoBehaviour {
public int VidaInicial = 10;
[HideInInspector]
public int Vida;
public float Velocidade = 10;
[HideInInspector]
public float tempoEntrePosicoesAleatorias = 4;
void Awake () {
Vida = VidaInicial;
}
}
E a classe ControlaInimigo ficou assim:
Declaração:
public GameObject Jogador;
private ControlaMovimento controlaMovimento;
private ControlaAnimacao controlaAnimacao;
private ControlaStatusInimigo controlaStatusInimigo;
public AudioClip SomDeMorte;
private Vector3 direcao;
private int distanciaParaVagar = 20;
E o método Vaga():
void Vagar()
{
controlaStatusInimigo.PosicaoAleatoria();
bool ficouPertoOSuficiente = Vector3.Distance(transform.position, controlaStatusInimigo.posicaoRandom) <= 0.05;
if (ficouPertoOSuficiente == false)
{
SeguirParaPosicaoAleatoria();
}
}
Não sei se essa é a ideia por trás do que você pediu.
Da uma olhada e da sua opinião kkkkk
Tenho uma noção de Orientação a Objeto, mas sempre foi um problema na facul hehehe