Bonjour,
Je travaille actuellement sur un RPG en 2D basique pour un projet de fin de BTS informatique.
J'en suis pour le moment à la création des mécaniques afin de pouvoir développer quelques maps à présenter et avoir quelque chose de bien concret mais j'ai cependant un problème qui m'handicape pas mal, je n'arrive pas à faire en sorte que les ennemis se dirigent vers moi pour m'attaquer.
Le joueur comme les monstres utilisent un Rigibody2D pour se déplacer, le joueur dispose d'un Box Colider2D, les monstres d'un Cercle Colider2D, lorsque les monstres entre en contact avec mon Colider2D je perd de la vie.
J'ai donc essayé pour le système de focus de récupérer la position du joueur grâce à une variable qui utilise objet Transform :
public Transform cible;
Auquel je lui affecte le joueur.
J'ai aussi une variable distance qui me permet de vérifier la position du joueur et celle du monstre afin de calculer la distance entre les deux :
private float distance;
distance = Vector3.Distance(cible.transform.position, transform.position);
Puis de là, dans la boucle update, je vérifie si la distance spécifiée d'aggro est minimale ou non et franchie et si elle l'est, je dis à mon monstre de se déplacer vers le joueur :
if (distance < 10)
{
moveDirection = new Vector3(cible.transform.position.x * moveSpeed, cible.transform.position.y * moveSpeed, 0f);
}
Mais grosso modo, je pense le déplacer dans un vecteur qui le déplace dans l'axe du joueur, et pas forcément vers le joueur, de ce fait, dès que je m'approche des monstres, ils fuient toujours dans la même direction ...
J'ai aussi essayé via un raycast mais c'est le même résultat, c'est vraiment mon vecteur de déplacement qui n'est pas bon.
Quelqu'un saurait me conseiller là dessus?
De même, si quelqu'un aurait un peu de temps à prendre pour moi, il me reste d'autres soucis à gérer (pour d'autres monstres, déclencher l'attaque quand il est près du joueur, afficher la barre de vie des monstres, et d'autres petites bricoles)
Merci d'avance !