Hola, quería ver si alguien me puede decir qué es mejor a la hora de hacer una script de detección(en este caso, para detectar al jugador) y de paso sacarme algunas dudas con respecto a las animaciones y movimiento. Las forma que uso es mediante un trigger(sphere collider), la cosa es que quizás hay un método mejor o más practico. Les dejo la script que hice:
using UnityEngine;
using System.Collections;
public class ControladorEnemigo : MonoBehaviour {
public enum Estado{
Idle,
Corre,
Ataca1,
Ataca2,
Baila,
}
public Estado EstadoActual;
public Animator ani;
public Rigidbody rb;
public Transform Player;
public float velocidad;
public float Damage;
public float MaxCercania;
public bool Detectado;
// Use this for initialization
void Start () {
Detectado = false;
ani = GetComponent<Animator>();
rb = GetComponent<Rigidbody>();
EstadoActual = Estado.Idle;
}
// Update is called once per frame
void Update () {
float Distancia = Vector3.Distance(transform.position, Player.position);
if(EstadoActual == Estado.Ataca1){
ani.Play("AtaqueBase");
}
if(EstadoActual == Estado.Ataca2){
ani.Play("AtaqueMax");
}
if(Detectado){
transform.LookAt(Player);
if(Distancia < MaxCercania){
StartCoroutine(TiempoAtack());
}
else{
if(Distancia > MaxCercania){
rb.AddForce(transform.forward * velocidad);
ani.Play("Correr");
EstadoActual = Estado.Corre;
}
}
}
RaycastHit hit;
if(Physics.Raycast(transform.position, transform.forward, out hit, 2)){
if (hit.collider.tag ==