Hola a todos,
Soy nuevo en esto del scripting y estaba probando hacer un script enemigo al que, al estar más cerca de el nos empiece a ***guir.Pero hay un problema, al estar lejos de él, se va acercando muy lento, y al irnos acercando aumenta su velocidad.El script está escrito en JS y quizá tenga horrores en él pero almenos lo intente :s
#pragma strict
var Jugador: Transform;
var VelocidadEnemigo = 4;
var DistanciaMin = 5;
var DistanciaMax = 10;
function Update(){
transform.LookAt(Jugador);
if(Vector3.Distance(transform.position, Jugador.position) <= DistanciaMin){
transform.position + transform.forward * 0;
} else
if(Vector3.Distance(transform.position, Jugador.position) >= DistanciaMin){
transform.position + transform.forward * VelocidadEnemigo*Time.deltaTime;
}
}
Gracias a todos.
Si el actuador se inicia cuando el jugador esta cerca solo es necesario esto...
if(Vector3.Distance(transform.position, Jugador.position) < DistanciaMax) //Cuando esta dentro del rango
O DistanciaMin segun tu logicaY luego utilza....siguiendo lo mismo.transform.LookAt(Jugador); //"miramos" hacia el objetivo
trasform.Traslate(Vector3.forward * VelocidadEnemigo * Time.deltaTime); //nos movemos
El codigo es muy basico, y funciona en determinados casos, pero para empezar bastara.
[quote author=GSG3D" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="15774" data-ipsquote-contentcommentid="100612">Si el actuador se inicia cuando el jugador esta cerca solo es necesario esto...
if(Vector3.Distance(transform.position, Jugador.position) < DistanciaMax) //Cuando esta dentro del rango
O DistanciaMin segun tu logicaY luego utilza....siguiendo lo mismo.transform.LookAt(Jugador); //"miramos" hacia el objetivo.Traslate(Vector3.forward * VelocidadEnemigo * Time.deltaTime); //nos movemos
El codigo es muy basico, y funciona en determinados casos, pero para empezar bastara.[/quote]Aún así sigo teniendo un problema, que es que estando lejos del cubo (por ahora es un cubo) se mueve muy lentamente y al acercarnos se acelera.
Te dejo un gif que acabo de grabar en mi pc.https://i.imgur.com/rmpo1vb.gif (https://i.imgur.com/rmpo1vb.gif)
Utiliza Debug.Log("Moviendose") dentro del if para saber cuando se esta ejecutando, deberia no tener que pasar eso.
Ademas para utilizar DistaciaMin haz lo siguiente:
var distance = Vector3.Distance(transform.position, Jugador.position);
if((distance > DistanceMin) && (distance < DistanceMax))
{
Debug.Log(distance);
Debug.Log("Moviendose");
transform.LookAt(Jugador);
transform.Traslate(Vector3.forward * VelocidadaEnemigo * Time.deltaTime);
}
Ademas ve si no tienes un script demas, o algo que lo modifque, tambien podrias verlo desactivando tal script para ver el problema, suerte!
¿Puede ser algo del rozamiento del rigidbody? (Parece que se acelera cuando levanta la cabeza ¿no?). Si pones el origen del player a la misma altura que el origen del enemigo, ¿también se acelera?.