AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 [PB Collisions] TopDown

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
RegelePisicilor
Pas mal
avatar

Messages : 34
Projet Actuel : Du shoot, du shoot et encore du shoot!

Action plateformer typé arcade sur écran fixe, dans lequel le joueur doit éliminer, room après room, chaque ennemi qui se présente à lui!

MessageSujet: [PB Collisions] TopDown   Dim 10 Juil 2016 - 11:06

Bonjour à tous,

j'ai un problème en apparence plutôt simple à résoudre mais sur lequel je me tire un peu les cheveux.

Je bosse sur un jeu en topdown, dans lequel je voudrais évidemment que le personnage ne passe pas à travers les murs ou les objets aux alentours.

J'ai tapé ce code ci:

J'ai deux objets, un personnage, ainsi qu'un objet qui fait office d'obstacle censé stopper la progression du joueur lorsque que celui-ci rentre en contact avec un mur.

Code:

// Dans Create

moveSpeed = 12;
moveStop = 0;

//Dans Step

haut = keyboard_check (vk_up);
bas =  keyboard_check (vk_down);
droite =  keyboard_check (vk_right);
gauche =  keyboard_check (vk_left);


if haut {
    y -= moveSpeed ;

};

if bas {
    y += moveSpeed ;

};

if droite {
    x += moveSpeed ;

};

if gauche {

    x -= moveSpeed ;

};


if droite {

  if place_meeting (x-1, y, obj_Obstacle) {

    x += moveStop;

      }
}


if gauche {

  if place_meeting (x+1, y, obj_Obstacle) {

    x -= moveStop;
      }

}

if haut {

  if place_meeting (x, y+1, obj_Obstacle) {

    x -= moveStop;

 }
}

if bas {

  if place_meeting (x, y-1, obj_Obstacle) {

    x += moveStop;
    }

}

Une idée sur ce qu'il me faudrait modifier?

Merci d'avance!

RG
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [PB Collisions] TopDown   Dim 10 Juil 2016 - 11:50

Tu fais les choses a l'envers, on vérifie qu'il n'y ai pas collision avant le déplacement, pas après.

_________________
                 
Revenir en haut Aller en bas
RegelePisicilor
Pas mal
avatar

Messages : 34
Projet Actuel : Du shoot, du shoot et encore du shoot!

Action plateformer typé arcade sur écran fixe, dans lequel le joueur doit éliminer, room après room, chaque ennemi qui se présente à lui!

MessageSujet: Re: [PB Collisions] TopDown   Dim 10 Juil 2016 - 12:52

Merci pour ta réponse, je vois ce que tu veux dire.

Du coup j'ai fait la chose suivante:

Code:


if place_meeting (x, y+1, obj_Obstacle)  {
if haut {
    y -= moveStop ;
            }
    y -= moveSpeed;

};

if place_meeting (x, y-1, obj_Obstacle)  {
if bas {
    y += moveStop ;
            }
    y += moveSpeed;

};

if place_meeting (x+1, y, obj_Obstacle)  {
if droite {
    x += moveStop ;
            }
    x += moveSpeed;

};

if place_meeting (x-1, y, obj_Obstacle)  {
if gauche {
    x -= moveStop ;
            }
    x -= moveSpeed;

};

Là par contre mon personnage ne bouge plus du tout. J'ai compris la logique et il me semblait pourtant avoir bien procéder.

Tel que je lis mon code, "je regarde s'il y a quelque chose au dessus, si j'appuie su haut alors la vitesse tomber à zéro, s'il n'y a rien, la vitesse de déplacement est de x".

Du coup je vois pas trop ou se situe l'erreur...
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [PB Collisions] TopDown   Dim 10 Juil 2016 - 13:15

Bah la déjà t'as confondu les signes pour haut et bas x)

_________________
                 
Revenir en haut Aller en bas
RegelePisicilor
Pas mal
avatar

Messages : 34
Projet Actuel : Du shoot, du shoot et encore du shoot!

Action plateformer typé arcade sur écran fixe, dans lequel le joueur doit éliminer, room après room, chaque ennemi qui se présente à lui!

MessageSujet: Re: [PB Collisions] TopDown   Dim 10 Juil 2016 - 13:42

J'ai vu ça juste après également!

Malheureusement le problème persiste, pas de mouvement du personnage...

Code:


if place_meeting (x, y+1, obj_Obstacle) {
if haut {
    y += moveStop ;
            }
    y += moveSpeed;
};

if place_meeting (x, y-1, obj_Obstacle)  {
if bas {
    y -= moveStop ;
            }
    y -= moveSpeed;

};

if place_meeting (x+1, y, obj_Obstacle)  {
if droite {
    x += moveStop ;
            }
    x += moveSpeed;

};

if place_meeting (x-1, y, obj_Obstacle)  {
if gauche {
    x -= moveStop ;
            }
    x -= moveSpeed;

};
                       
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8902
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [PB Collisions] TopDown   Dim 10 Juil 2016 - 14:35

T'as oublié la négation de ta condition aussi.

if(!place_meeting (x, y+1, obj_Obstacle))

ce qui veut dire if not place_meeting ...

_________________
                 
Revenir en haut Aller en bas
RegelePisicilor
Pas mal
avatar

Messages : 34
Projet Actuel : Du shoot, du shoot et encore du shoot!

Action plateformer typé arcade sur écran fixe, dans lequel le joueur doit éliminer, room après room, chaque ennemi qui se présente à lui!

MessageSujet: Re: [PB Collisions] TopDown   Dim 10 Juil 2016 - 16:13

Parfait, merci beaucoup!
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: [PB Collisions] TopDown   

Revenir en haut Aller en bas
 
[PB Collisions] TopDown
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

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