| [PB Collisions] TopDown | |
|
|
Auteur | Message |
---|
RegelePisicilor Pas mal
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!
| Sujet: [PB Collisions] TopDown Dim 10 Juil 2016 - 13: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 |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [PB Collisions] TopDown Dim 10 Juil 2016 - 13: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.
|
|
| |
RegelePisicilor Pas mal
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!
| Sujet: Re: [PB Collisions] TopDown Dim 10 Juil 2016 - 14: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... |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [PB Collisions] TopDown Dim 10 Juil 2016 - 15:15 | |
| Bah la déjà t'as confondu les signes pour haut et bas x) |
|
| |
RegelePisicilor Pas mal
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!
| Sujet: Re: [PB Collisions] TopDown Dim 10 Juil 2016 - 15: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;
}; |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [PB Collisions] TopDown Dim 10 Juil 2016 - 16: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 ...
|
|
| |
RegelePisicilor Pas mal
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!
| Sujet: Re: [PB Collisions] TopDown Dim 10 Juil 2016 - 18:13 | |
| |
|
| |
Contenu sponsorisé
| Sujet: Re: [PB Collisions] TopDown | |
| |
|
| |
| [PB Collisions] TopDown | |
|