Está en la página 1de 5

Calcular el Angulo de Rotación

de tus enemigos con base al


input que controla tu
personaje en dirección de
forware (Juegos2.5D) para así
crear una seudo-inteligencia
artificial
Calcular el Angulo de Rotación de tus enemigos con base al input que
controla tu personaje en dirección de forware (Juegos2.5D)
Personaje controlado por input
public Vector3 input;
public Animator characterPrincipal;
input = new Vector3(-Input.GetAxis("Vertical"), 0f, Input.GetAxis("Horizontal"));
transform.rotation = Quaternion.LookRotation(input, transform.up);
characterPrincipal.SetFloat ("Movimiento", input.sqrMagnitude*speed);
Calcular el Angulo de Rotación en sentido del
Forward para personaje y enemigos (Juegos2.5D)
Enemigo que responde a la ubicación del personaje en escena
En lugar del input como ocurre en nuestro personaje principal calcularemos la distancia que existe del enemigo al personaje
principal

public Vector3 distanciaDelEnemigoAlCharacterPrincipal;


distanciaDelEnemigoAlCharacterPrincipal = characterprincipal.position - transform.position;

Luego si hacemos la rotación de nuestro personaje enemigo


transform.rotation = Quaternion.LookRotation(distanciaDelEnemigoAlCharacterPrincipal, transform.up);

Por ultimo si controlamos los movimientos de nuestro enemigo de acuerdo a la maquina de estados finitos
characterEnemigo.SetFloat ("MoverseEnemigo", distanciaDelEnemigoAlCharacterPrincipal.sqrMagnitude * speedEnemigo);

Movimiento del
enemigo es un
parámetro tipo
Float el cual
permite saber si
me estoy
moviendo o no
Calcular el Angulo de Rotación en sentido del
Forward para personaje y enemigos (Juegos2.5D)
Nuestro código completo quedaría estructurado así
public Vector3 distanciaDelEnemigoAlCharacterPrincipal;
public Animator characterEnemigo;
distanciaDelEnemigoAlCharacterPrincipal = characterprincipal.position - transform.position;
transform.rotation = Quaternion.LookRotation(distanciaDelEnemigoAlCharacterPrincipal, transform.up);
if (distanciaDelEnemigoAlCharacterPrincipal.sqrMagnitude <0.8f) {
characterEnemigo.SetFloat ("MoverseEnemigo", distanciaDelEnemigoAlCharacterPrincipal.sqrMagnitude * speedEnemigo);
if (distanciaDelEnemigoAlCharacterPrincipal.sqrMagnitude <0.56f) {
characterEnemigo.SetFloat ("MoverseEnemigo", -0,2f);
characterEnemigo.SetBool ("Atacar", true);
}else{
characterEnemigo.SetBool ("Atacar", false);
}
}
Calcular el Angulo de Rotación en sentido del
Forward para personaje y enemigos (Juegos2.5D)

Con esta técnica podemos crear una seudo-inteligencia Artificial la


cual podemos mezclar con Navegación para crear la mecánica de
patrullaje de nuestros enemigos, pero la distancia toca medirla por
medio de ensayo y error hasta estar acorde a sus criterios
(ejemplo claro los hongos malvados que patrullan y te persiguen
en Mario)

También podría gustarte