Noticias

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

Enemigo

Iniciado por eliasdixon, Junio 24, 2016, 10:54:16 PM

Tema anterior - Siguiente tema
Junio 24, 2016, 10:54:16 PM Ultima modificación: Junio 25, 2016, 11:45:29 PM por pioj
buenas gente, miren tengo un problemita y queria ver si alguien me ayuda con este script,
 
el problema es que el enemigo me sigue constantemente de la unica forma que deja de ***guirme es cuando me escondo en una taquilla ya que el script se basa en eso, pero me gustaria que el enemigo siempre se mueva con waypoints y que solo me persiga cuando me ve, este es el script
 
 
 

private var agent : NavMeshAgent;
var target : Transform;
var target2 : Transform;
var target3 : Transform;
var waypointer : Transform;
var waypointer2 : Transform;
public var hiding : boolean = false;
function Start ()
{
agent = GetComponent(NavMeshAgent);
}
function Update ()
{
agent.SetDestination(target.position);
agent.SetDestination(waypointer.position);
   if(!hiding)
      waypointer = target;
   else
   {         
      target = waypointer;
      target = waypointer2;
      target2 = waypointer2;
      agent.SetDestination(waypointer2.position);
      agent.SetDestination(target2.position);
   }
   if(Input.GetKeyUp(KeyCode.E))
   {
      hiding = false;
      target = waypointer;
   }
 
}

 
 

Para temas de "visión" /"audición" de los enemigos, creo que se lo que se suele usar es la función Raycast, que en definitiva (que me corrijan los expertos si me equivoco) no es más que una línea (invisible en el juego) que se dibuja desde el objeto de refencia (tu enemigo) hasta el infinito o la distancia que determines. De esta manera, si tu protagonista está en la línea de alcance emitida, tu enemigo "verá"/ "oirá" a tu protagonista y echará a andar o lo que determines.
 
 
 
https://unity3d.com/es/learn/tutorials/topics/physics/raycasting
 
 
 
Sobre los waypoints no te sé decir, pero podrías echarle un ojo al Navigation Mesh System (navmesh), que a priori, me parece bastante sencillo de usar (aunque siempre puede traer dificultades en según qué ocasiones, como todo... )
 
 
 
https://unity3d.com/es/learn/tutorials/topics/navigation/navmesh-agent
 
 
 
Este tutorial te puede venir MUY BIEN para ver cómo hacer funcionar el navmesh
 
https://unity3d.com/es/learn/tutorials/projects/survival-shooter-tutorial
 
 
 
Espero que te sirva. ¡Un saludo!

Hola, diré (aunque no se si es un error, pero me ha extrañado, en caso de que no sea un error, si me pudieras explicar eso que me llevo aprendido xd),  en el else le das un valor a target, y luego otro (justo seguido) sobreescribiendo así el primer valor no? Es decir, la primera asignación realmente no hace nada no?
 

      ...
   else
   {         
      target = waypointer;
      target = waypointer2; //se borra el valor de waypointer y se le asigna el de waypointer2 no? la primera asignación no hace nada no?
      target2 = waypointer2;
      agent.SetDestination(waypointer2.position);
      agent.SetDestination(target2.position);
   }   
   ...

 
Realmente, no se sobre waypoints, pero me ha extrañado xd. Siento si está bien y he hecho perder el tiempo.

Tienes razón @Superkorlas.
 
Sobre el script, primero determina dónde tiene que ir, si está en la posición waypoint 1, ir a la 2... si el objetivo no está oculto ir al objetivo... si se vuelve a ocultar ir al waypoint siguiente o más cercano... y ya después le mandas ese target al agent, llama una vez el SetDestination.

claro, tengo ese error, en vez de ir al uno y despues al 2, siempre va hacia el 2, y claro habia pensado en raycast pero es un poco complejo, aun no tengo mucha mania en eso, pero lo voy a intentar

Yo te voy a recomendar que mires el Videotutorial de Stealth que los enemigos tienen un comportamiento parecido al que quieres. Hacen rutas en waypoints y cuando te ven te persiguen. Te paso el enlaza a ver si te ayuda.
 
https://unity3d.com/es/learn/tutorials/projects/stealth-tutorial-4x-only/enemy-sight?playlist=17168
 
Es para 4.X pero los conceptos son los mismos.

Etiquetas: