AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment :
Pokémon EV06 : où acheter le Bundle Lot ...
Voir le deal

 

 [résolu] déplacement ennemie case par case

Aller en bas 
3 participants
AuteurMessage
Ender10
Nouveau



Messages : 4

[résolu] déplacement ennemie case par case Empty
MessageSujet: [résolu] déplacement ennemie case par case   [résolu] déplacement ennemie case par case EmptyVen 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 Wink


Dernière édition par Ender10 le Dim 17 Jan 2016 - 15:37, édité 1 fois
Revenir en haut Aller en bas
Ender10
Nouveau



Messages : 4

[résolu] déplacement ennemie case par case Empty
MessageSujet: Re: [résolu] déplacement ennemie case par case   [résolu] déplacement ennemie case par case EmptySam 9 Jan 2016 - 13:58

Je vous montre le code (pour l'instant je n'ai pas encore crée la collision des murs)

Voila l'obj_joueur :
Code:
Create Event:

execute code:

gridSize = 32;
moveSpeed = 4;
isMoving = false;
moveTimer = 0;
speedX = 0;
speedY = 0;

Step Event:

execute code:

if (isMoving == false)
{
    if (keyboard_check_pressed(vk_right))
    {
        isMoving = true;
        moveTimer = gridSize;
        speedX = moveSpeed;
        speedY = 0;
    }
    if (keyboard_check_pressed(vk_left))
    {
        isMoving = true;
        moveTimer = gridSize;
        speedX = -moveSpeed;
        speedY = 0;
    }
    if (keyboard_check_pressed(vk_up))
    {
        isMoving = true;
        moveTimer = gridSize;
        speedX = 0;
        speedY = -moveSpeed;
    }
    if (keyboard_check_pressed(vk_down))
    {
        isMoving = true;
        moveTimer = gridSize;
        speedX = 0;
        speedY = moveSpeed;
    }
}

if (isMoving == true)
{
    x += speedX;
    y += speedY;
    
    moveTimer -= moveSpeed;
    if (moveTimer == 0) { isMoving = false; }
}

et l'obj_ennemie :
Code:
Create Event:

execute code:

gridSize = 32;
moveSpeed = 4;
isMoving = false;
moveTimer = 0;
speedX = 0;
speedY = 0;

Step Event:

execute code:

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

if (isMoving == true)
{
    x += speedX;
    y += speedY;
    
    moveTimer -= moveSpeed;
    if (moveTimer == 0) { isMoving = false; }
}


Dite moi ce que je dois changer
Revenir en haut Aller en bas
hyper
Utilisateur confirmé: Rang ****
hyper


Messages : 1457
Localisation : près de Nantes
Projet Actuel : Super Note Aventure

[résolu] déplacement ennemie case par case Empty
MessageSujet: Re: [résolu] déplacement ennemie case par case   [résolu] déplacement ennemie case par case EmptySam 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 Wink

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.
Revenir en haut Aller en bas
https://cagibi.itch.io/
Ender10
Nouveau



Messages : 4

[résolu] déplacement ennemie case par case Empty
MessageSujet: Re: [résolu] déplacement ennemie case par case   [résolu] déplacement ennemie case par case EmptySam 9 Jan 2016 - 16:03

Merci de ta réponse Very Happy , j'ai ajouter la fonction point_direction dans l'evenement step de l'ennemi.
Mais je rencontre un autre problème Confused , 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;
        }
    }
}

if (isMoving == true)
{
    x += speedX;
    y += speedY;
    
    moveTimer -= moveSpeed;
    if (moveTimer == 0) { isMoving = false; }
}

Ai-je fait une faute ? scratch
Revenir en haut Aller en bas
Ender10
Nouveau



Messages : 4

[résolu] déplacement ennemie case par case Empty
MessageSujet: Re: [résolu] déplacement ennemie case par case   [résolu] déplacement ennemie case par case EmptySam 9 Jan 2016 - 16:49

C bon j'ai corrigé moi même

if (46 < angle < 135)

if (46 < angle && angle < 135)

Merci Very Happy
Revenir en haut Aller en bas
Asu
Utilisateur confirmé: Rang ****
Asu


Messages : 895

[résolu] déplacement ennemie case par case Empty
MessageSujet: Re: [résolu] déplacement ennemie case par case   [résolu] déplacement ennemie case par case EmptySam 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 Very Happy
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.
Revenir en haut Aller en bas
Contenu sponsorisé





[résolu] déplacement ennemie case par case Empty
MessageSujet: Re: [résolu] déplacement ennemie case par case   [résolu] déplacement ennemie case par case Empty

Revenir en haut Aller en bas
 
[résolu] déplacement ennemie case par case
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] Déplacement case par case
» Deplacement avec la souris case par case
» déplacement case souris
» [resolu]Deplacement et animation
» [Résolu] select case & cie

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide confirmés-
Sauter vers: