Sujet: [résolu] déplacement ennemie case par case Ven 8 Jan 2016 - 17:11
Bonjour à tous,
Je suis en train de faire un jeu tour par tour ou le joueur et l'ennemie se deplace case par case. J'ai programmé que quand le joueur est dans la porté de "vision" de l'ennemie, l'ennemie se dirige vers le joueur. Le probleme c'est que l'ennemie ne se deplace pas case par case vers le joueur (quand le joueur se déplace).
je voudrais faire comme pokemon donjon mystere (voir a 24 sec)
J'espère avoir été assez clair et merci d'avance pour votre aide
Dernière édition par Ender10 le Dim 17 Jan 2016 - 15:37, édité 1 fois
Ender10 Nouveau
Messages : 4
Sujet: Re: [résolu] déplacement ennemie case par case Sam 9 Jan 2016 - 13:58
Je vous montre le code (pour l'instant je n'ai pas encore crée la collision des murs)
if (isMoving == false) { if (keyboard_check_pressed(vk_left) || keyboard_check_pressed(vk_up) || keyboard_check_pressed(vk_right) || keyboard_check_pressed(vk_down)) { // je sais pas quoi mettre pour qu'il se dirige vers le joueur } }
Messages : 1457 Localisation : près de Nantes Projet Actuel : Super Note Aventure
Sujet: Re: [résolu] déplacement ennemie case par case Sam 9 Jan 2016 - 14:30
Tu peux faire un objet parent des deux, étant donné qu'une partie de leur code est la même, ça améliorera l'organisation et rendra le code moins lourd. Tu peux également remplacer keyboard_check_pressed par keyboard_check pour un meilleur gameplay
Pour le soucis de ton ennemi, si tu veux une IA pas trop développée tu peux voir d'abord si le héros est assez proche, puis bouger en fonction de la direction entre les deux objets. Tu peux le faire en utilisant point_direction de l'ennemi au héros, un angle entre 45° et 135° par exemple signifie que l'ennemi doit aller vers le haut (les angles sous GM commencent à droite (0°) et vont dans le sens inverse des aiguilles d'une montre).
_________________ côt.
Ender10 Nouveau
Messages : 4
Sujet: Re: [résolu] déplacement ennemie case par case Sam 9 Jan 2016 - 16:03
Merci de ta réponse , j'ai ajouter la fonction point_direction dans l'evenement step de l'ennemi. Mais je rencontre un autre problème , c'est que l'ennemi se dirige seulement vers le bas...
Le Step event de obj_ennemi :
Code:
if (isMoving == false) { if (keyboard_check(vk_left) || keyboard_check(vk_up) || keyboard_check(vk_right) || keyboard_check(vk_down)) { // se déplace vers le haut if (46 < point_direction(x, y, obj_player.x, obj_player.y) < 135) { isMoving = true; moveTimer = gridSize; speedX = 0; speedY = -moveSpeed; } // se déplace vers la gauche if (136 < point_direction(x, y, obj_player.x, obj_player.y) < 225) { isMoving = true; moveTimer = gridSize; speedX = -moveSpeed; speedY = 0; } // se déplace vers le bas if (226 < point_direction(x, y, obj_player.x, obj_player.y) < 315) { isMoving = true; moveTimer = gridSize; speedX = 0; speedY = moveSpeed; } // se déplace vers la droite if (316 < point_direction(x, y, obj_player.x, obj_player.y) < 45) { isMoving = true; moveTimer = gridSize; speedX = moveSpeed; speedY = 0; } } }
Sujet: Re: [résolu] déplacement ennemie case par case Sam 9 Jan 2016 - 16:49
C bon j'ai corrigé moi même
if (46 < angle < 135)
if (46 < angle && angle < 135)
Merci
Asu Utilisateur confirmé: Rang ****
Messages : 895
Sujet: Re: [résolu] déplacement ennemie case par case Sam 9 Jan 2016 - 17:11
Ender10 a écrit:
C bon j'ai corrigé moi même
if (46 < angle < 135)
if (46 < angle && angle < 135)
Merci
En effet 46 < angle < 135 est incorrect Ça équivaut à faire (46 < angle) < 135 Or (46 < angle) est un booléen, c-à-d une valeur égale à 1 (true) ou 0 (false) Or dans tous les cas, 0 ou et 1 est inférieur à 135.
Contenu sponsorisé
Sujet: Re: [résolu] déplacement ennemie case par case