Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Script enemigo BÁSICO

Iniciado por MatiasBoyer, Julio 23, 2015, 01:02:29 AM

Tema anterior - Siguiente tema
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

Julio 23, 2015, 04:24:49 AM #3 Ultima modificación: Julio 23, 2015, 04:26:28 AM por GSG3D
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!

Julio 23, 2015, 11:31:22 AM #4 Ultima modificación: Enero 01, 1970, 01:00:00 AM por Antonio
¿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?.

Etiquetas: