Jump to content
MatiasBoyer

Script enemigo BÁSICO

Recommended Posts

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 perseguir.

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.

Share this post


Link to post
Share on other sites

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 logica

Y 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.

Share this post


Link to post
Share on other sites

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 logica

Y 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.

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

Share this post


Link to post
Share on other sites

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!

Edited by GSG3D

Share this post


Link to post
Share on other sites

¿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?.

Share this post


Link to post
Share on other sites

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...