Unity: Duda Programación: Encarar

J

Hola,

Sé que parece muy estúpida la pregunta, pero puede explicarme alguien como funciona la opción de encarar un enemigo a nivel lógico de programación?
No me refiero a que necesite código, sino a la lógica que mueve esa opción.

Yo me lo imagino que para encarar a un enemigo éste tendrá que estar primero en rango de distancia y luego activar el encare que será crear un eje imaginario en el que el prota y el enemigo se alinean de frente, voy más o menos encaminado?

Mil gracias por vuestro tiempo,

-Crack-

Lo que se puede hacer es rotar la camara y el personaje para que miren al enemigo (restas la posición del enemigo con la tuya y te da el vector distancia, lo normalizas y tienes el dirección). Si cada frame rotas para fijar al personaje y la camara en el enemigo, tu movimiento es relativo a la nueva vista y debería dar como resultado un comportamiento parecido a dark souls.

1 1 respuesta
Escipionicus

Te explico lo que hago. Utilizo un sphere collider para definir si el jugador está dentro del alcance que quiero darle a ese npc. Luego me fijo si está a la vista del npc. Si está de frente. En mi caso hay sigilo, así que si va agachado por un costado o por detrás el npc no lo detecta. De lo contrario lo detecta igual pero un poco más cerca que si lo tuviese a la vista. Bueno, al momento del avance, utilizo esto:

		Vector3 direccionataca_ = player_.transform.position - transform.position;
		GetComponent<UnityEngine.AI.NavMeshAgent>().destination = player_.transform.position - (direccionataca_.normalized * 2.6f);
		var rotacion_ = Quaternion.LookRotation ((player_.transform.position - (direccionataca_.normalized)) - transform.position);
		transform.rotation = Quaternion.Slerp (transform.rotation, rotacion_, Time.deltaTime * velocidadrotacion_);
		Vector3 range_ = player_.transform.position - transform.position;
		if (range_.magnitude < 5f)
		{
                  acá transcurre el ataque, animación, sonido, daño al player y así...
                }

En esencia, necesitas que el npc una vez que detecte al player gire mirándolo, que es lo que hago con los rotation, y luego avance en esa dirección; ahí es donde actuan los position junto con el NavMeshAgent. Espero te sea de ayuda.

1 1 respuesta
B

Echale un vistazo ... https://eleazarcelis.wordpress.com/2015/10/10/creando-una-clase-basica-de-inteligencia-artificial-ai-en-unity/

1 1 respuesta
J

#2 Muchas gracias -Crack-!
Un saludo, cuando vaya probando avisaré
#3 Mil gracias
#4 Me ha molado mil el enlace, tiene buena pinta

1

Usuarios habituales