Jump to content

Recommended Posts

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 perseguirme 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;
		}


}

 

Edited by pioj
uso de tags y <> para pegar código.

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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