AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-39%
Le deal à ne pas rater :
Ordinateur portable ASUS Chromebook Vibe CX34 Flip
399 € 649 €
Voir le deal

 

 [Resolu] pb general de collision et de deplacement

Aller en bas 
5 participants
AuteurMessage
nmat
Débutant



Messages : 18
Localisation : Perpignan

[Resolu] pb general de collision et de deplacement Empty
MessageSujet: [Resolu] pb general de collision et de deplacement   [Resolu] pb general de collision et de deplacement EmptyMer 3 Juil 2013 - 19:36

bonsoir @ tous,

Comme vous le savez depuis quelque temps j'essaye GM en créant un petit jeux.

Mais depuis le début, je rencontre un problème lié aux collisions et aux déplacements de mon personnage.

En fait je ne comprend pas trop malgré la lecture du tuto comment cela fonctionne.

Le problème est que mon personnage selon les réglages se bloque sur les murs gauche ou droite, haut ou bas.
J'ai essayé de changer les coordonnées en centré mais cela change juste le mur sur lequel il se bloque.
Par exemple je me dirige sur le mur de droite j'entre en collision je ne peu pas aller en haut ou en bas seulement vers la gauche ou inversement selon le mur et les réglages.
j'ai aussi essayer les différentes combinaisons rectangle, précise solide ou non. Et bon cela reste un peu aléatoire.

En bidouillant les valeurs en manuel j'arrive à un résultat approximatif puisque je peu me déplacer le long des murs mais il m'arrive de bloquer sur certain bloc qui sont dans la pièce. Ces blocs doivent effectivement me bloquer dans le sens du mouvement mais dans les autres (Par exemple si j'arrive par en bas je suis bloquer vers le haut mais je devrais pouvoir aller à gauche et à droite)

Je ne sais pas quoi faire.

Les mouvements de mon personnage sont gérer par du code et des événements en drag and drop.

Merci de vos conseils.

Nicolas


Dernière édition par nmat le Jeu 4 Juil 2013 - 17:07, édité 1 fois
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

[Resolu] pb general de collision et de deplacement Empty
MessageSujet: Re: [Resolu] pb general de collision et de deplacement   [Resolu] pb general de collision et de deplacement EmptyMer 3 Juil 2013 - 19:43

Le moteur physique intégré de GM est, comme tu as pu le constater, une belle source d'ennuis. Je ne peux que te conseiller d'écrire le tien, c'est pas plus difficile, et tu connais ton code donc tu peux le débuguer facilement.
Il s'agit simplement de remplacer hspeed et vspeed par deux variables de ton cru, et les events de collision par l'usage de la fonction place_meeting(...) dans l'event Step. Il sera aussi judicieux de ne pas utiliser d'objet "solid".
Je te laisse farfouiller un peu, et je repasserai t'aider si tu bloques ;)

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
marty
Utilisateur confirmé: Rang ***
marty


Messages : 697
Projet Actuel : laby-ereinte !

[Resolu] pb general de collision et de deplacement Empty
MessageSujet: Re: [Resolu] pb general de collision et de deplacement   [Resolu] pb general de collision et de deplacement EmptyMer 3 Juil 2013 - 21:40

en gros il faut sortir l'objet de la collision en le déplaçant pour que la condition ne soit pas toujours vraie.

http://www.lecbna.org/
sur le site ve dans tutoriaux /intermédiaire/les collisions en gml c'est bien expliqué.



_________________
Code:
rnd=>insight=>play

http://gamemaker.info/fr/manual



Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

[Resolu] pb general de collision et de deplacement Empty
MessageSujet: Re: [Resolu] pb general de collision et de deplacement   [Resolu] pb general de collision et de deplacement EmptyMer 3 Juil 2013 - 22:42

En général, les débutants de GM font un simple test à un pixel, et font avancer l'objet de x pixels ; par exemple, pour aller vers la droite :
if(place_free(x+1,y)) x+=5;
Problème : si le premier pixel à droite est libre, mais pas le 5ème, ben l'objet se retrouve encastré dans un mur.
L'astuce c'est donc de faire ca :
for(i=0;i<5.i+=1){
if(place_free(x+1,y)) x+=1;
}

Je suis d'accord avec D-z, c'est un gros bordel, et c'est encore pire quand tu veux faire des mouvements à 360°... gnii 

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
D-z


Messages : 1611
Localisation : Montpellier

[Resolu] pb general de collision et de deplacement Empty
MessageSujet: Re: [Resolu] pb general de collision et de deplacement   [Resolu] pb general de collision et de deplacement EmptyMer 3 Juil 2013 - 23:00

@Térence68 : je parlais du moteur intégré, celui qui essaye de se débrouiller avec solid, hspeed, vspeed, speed, direction, gravity, friction... On ne sait pas vraiment comment c'est implémenté exactement, et aucun contrôle dessus. Donc dès que tu sors du casse-briques, c'est un énorme imbroglio de contre-bugs qui tient avec du scotch... Mieux vaut développer son propre petit moteur qui fait ce dont on a besoin quand on en a besoin. C'est pas si violent que ça pour un moteur basique, et bien moins prise de tête.

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Rem_101
*Excellent utilisateur*
Rem_101


Messages : 4356
Localisation : chez votre marchand de journaux

[Resolu] pb general de collision et de deplacement Empty
MessageSujet: Re: [Resolu] pb general de collision et de deplacement   [Resolu] pb general de collision et de deplacement EmptyJeu 4 Juil 2013 - 0:07

Térence68 a écrit:
En général, les débutants de GM font un simple test à un pixel, et font avancer l'objet de x pixels ; par exemple, pour aller vers la droite :
if(place_free(x+1,y)) x+=5;
Problème : si le premier pixel à droite est libre, mais pas le 5ème, ben l'objet se retrouve encastré dans un mur.
L'astuce c'est donc de faire ca :
for(i=0;i<5.i+=1){
if(place_free(x+1,y)) x+=1;
}

Je suis d'accord avec D-z, c'est un gros bordel, et c'est encore pire quand tu veux faire des mouvements à 360°... gnii 

Je comprend pas bien.
Suffit pas juste de vérifier la position à la prochaine step ? Au lieu de 1 pixel?

if !place_meeting(x+(pixel_par_deplacement,y,obj_bloc) {x+=pixer_par_deplacement;}

Savoir si je peux optimiser le moteur de mon jeu aussi. Smile
Revenir en haut Aller en bas
Térence
Utilisateur confirmé: Rang *****
Térence


Messages : 2213
Localisation : Oui

[Resolu] pb general de collision et de deplacement Empty
MessageSujet: Re: [Resolu] pb general de collision et de deplacement   [Resolu] pb general de collision et de deplacement EmptyJeu 4 Juil 2013 - 8:10

D-z> ok, moi je parlais aussi de toutes les actions en D&D pour le déplacement qui ne sont pas les meilleures. Je me rappelle à mes débuts, quand il me fallait 10 min pour faire bouger un perso, parce qu'il fallait stopper le mouvement quand on relâche une touche...

Rem_101> en fait ca dépend comment tu fonctionne : si ton bonhomme avance de 5 pixels à chaque fois et que tous tes objets sont alignés sur un grille qui est un multiplicateur de 5 ( 50 par exemple), ta solution fonctionne. Par contre si t'utilise une grille qui n'est pas un multiplicateur de ta vitesse (genre 32), bah à certaines position ca va poser problème : c'était avec mon projet de rpg, au départ j'avais fait comme toi, mais tous mes objets avaient une taille de 32 par 32. Donc, en principe, à certains endroits, t'avais juste la place pour passer entre 2 blocs. Sauf qu'en réalité, en fonction de la position des objets, en avancant à chaque fois de 5 pixels, t'étais soit 1 pixel trop à gauche, ou 4 pixels trop à droite... donc c'était impossible de passer :
mrgreen2 mrgreen2 mrgreen2 cdmrgreen2 
cd cd cd gnii mrgreen2
Soit mrgreen2 un mur, cd un espace vide et gnii le héros, le héros pouvait être à 1 pixel du mur à sa droite et ne pas pouvoir avancer plus vers la droite, puisque 5 pixels plus loin, la place est prise... Et donc comme il est décalé de 1 pixel, il peut pas non plus aller vers le haut... donc l'avantage de ma technique, c'est que le héros pourrait avancer jusqu'au mur de droite, et ainsi passer sans problème en haut Smile
Bon, et là ia le mur de droite qui lui permet de n'avancer que d'un pixel, mais s'il n'était pas là, le héros serait quand même bloqué, puisqu'il avancerait à chaque dois de 5 pixels sur les cotés, tout en gardant son décalage par rapport au vide du haut... La solution consiste donc à faire une accélération progressive, comme ca, en appuyant un bref instant, le héros peut avancer d'un pixel.

Ouf, j'espère que j'ai été clair awesome

edit : d'ailleurs c'est pour ca qu'il y a un script spécial dans le pac man d'exemple fourni avec GM, ma méthode aurait été bien plus simple...

_________________
Je suis partie sur les ailes du vent et la tempête m'a ramenée.
Revenir en haut Aller en bas
Rem_101
*Excellent utilisateur*
Rem_101


Messages : 4356
Localisation : chez votre marchand de journaux

[Resolu] pb general de collision et de deplacement Empty
MessageSujet: Re: [Resolu] pb general de collision et de deplacement   [Resolu] pb general de collision et de deplacement EmptyJeu 4 Juil 2013 - 13:22

ok je viens de comprendre, c'est pas con du tout. J'avais jamais pensé à un truc comme ça. Surprised
Revenir en haut Aller en bas
nmat
Débutant



Messages : 18
Localisation : Perpignan

[Resolu] pb general de collision et de deplacement Empty
MessageSujet: Re: [Resolu] pb general de collision et de deplacement   [Resolu] pb general de collision et de deplacement EmptyJeu 4 Juil 2013 - 17:06

Bonjour,

Merci @ tous de vos conseils avisés. Cependant pour mon premier jeu, j'ai opté pour une soluce plus simple que de faire mon propre moteur. A savoir :

J'ai modifié mon code afin que mon personnage ne puise se déplacer que sur des lignes et des colonnes prédéfinies (x et y multiple de 32). Une petite formules de calcul et le tour est joué.

Par exemple pour la touche left.
Code:

posY = round(y/32)*32;
y=posY;

De coup tout se passe correctement. gnii 

J'ai bien pris note de toutes vos remarques et conseils et poursuit ma lecture de la doc et des tuto gml. Mais je pense que je mettrais la grosse artillerie en route pour mon prochain petit jeux. clinoeuil 

Encore merci
@+
Nicolas
Revenir en haut Aller en bas
Contenu sponsorisé





[Resolu] pb general de collision et de deplacement Empty
MessageSujet: Re: [Resolu] pb general de collision et de deplacement   [Resolu] pb general de collision et de deplacement Empty

Revenir en haut Aller en bas
 
[Resolu] pb general de collision et de deplacement
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Problemes: Deplacement/Collision et Affichage
» problème de collision ? objets bloqués après déplacement.
» [résolu] Déplacement d'IA sur un escalier
» déplacement de voiture [résolu]
» [Résolu] Déplacement progressif

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: