problème de collision ? objets bloqués après déplacement.
3 participants
Auteur
Message
Elriks Débutant
Messages : 17
Sujet: problème de collision ? objets bloqués après déplacement. Lun 21 Jan 2013 - 21:01
Bonsoir,
une vidéo vaut mieux qu'un long discours le problème se verra de lui même :
je peux déplacer un objet dans toutes les directions, mais une fois que celui ci a été déplace 1 fois il sera impossible de le redeplacer car je pense qu'il "mord" sur l'objet auquel il se trouve collé et les 2 sont bloqué, je peux plus bouger ni l'objet 1 ni son voisin.
pour confirmer, il suffit que je fonce sur un objet déjà collé a un voisin, et on voit bien le 1mm d'enfoncement de l'objet.
Code:
if (place_free(x-4,y) && place_meeting(x-1,y,obj_koala)) {
if(keyboard_check(vk_right)) { hspeed = 6; } }
else { if(!place_free(x,y)) { hspeed = 0; } }
Merci
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
Sujet: Re: problème de collision ? objets bloqués après déplacement. Lun 21 Jan 2013 - 21:46
Bonsoir,
Essai de remplacer:
Code:
if(!place_free(x,y)) { hspeed = 0; }
Par :
Code:
if( !place_free(x+hspeed,y) and hspeed!=0 ) hspeed-=sign(hspeed);
Elriks Débutant
Messages : 17
Sujet: Re: problème de collision ? objets bloqués après déplacement. Lun 21 Jan 2013 - 21:54
Même problème.
J'ai découvert la fonction "Move_contact_solid" qui est très bien, ca ne stuck plus l'objet mais le problème est que la fonction "téléporte" l'objet , enfin elle se déplace trop vite pour que cela fasse un effet de mouvement.
je cherche a vérifier si on peut créer l'effet de mouvement
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
Sujet: Re: problème de collision ? objets bloqués après déplacement. Lun 21 Jan 2013 - 22:02
Même probleme? Etrange doit avoir autre chose qui cloche dans ton code.
Sinon pour le movement je te laisse regarder par ici :
Par contre je ne connais pas ton niveau donc je ne sais pas si tu va comprendre mon code.
Elriks Débutant
Messages : 17
Sujet: Re: problème de collision ? objets bloqués après déplacement. Mar 22 Jan 2013 - 10:52
Merci je regarderai cela
Ce problème me rend fou, j'avais aussi crée le sujet sur le forum officiel de GM, j'y ai laissé mon projet a télécharger et je test les possibilités qu'on me propose, la dernière j'ai pas eu le temps de la développer. Je comprends pas pourquoi c'est aussi bordelique pour un simple push-stop
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
Sujet: Re: problème de collision ? objets bloqués après déplacement. Mar 22 Jan 2013 - 11:40
Bonjour,
Ce matin je suis sous Windows et donc GM de dispo et j'ai un peut de temps à te consacrer voilà le tout fait en 5min chrono.
Sujet: Re: problème de collision ? objets bloqués après déplacement. Mar 22 Jan 2013 - 14:42
Je testerai cela ce soir, merci infiniment
Pourrais je abuser un chouia en te demandant d'expliquer un peu le code (sur les grandes lignes) ? Car j'avoue ne pas avoir ton niveau et certaines lignes me paraissent obscure même si j'en reconnais des fonctions mathématiques. J'aime comprendre comment fonctionne les choses et pourquoi on obtient tel ou tel résultat
repeat, ceil, abs, l'event_user(0) ...le pourquoi de leur association alors qu'il me semble que l'idée d'abs et du ceil est le même, obtenir un entier (du moins, il me semble) ..je suis un peu perdu
je vais tenter une explication sommaire tout de même :
j'ai -6.1231456
abs = 6.1231456 ceil = 6 repeat ...il repete X fois dont X depend de la vitesse l'event_user(0) ?
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
Sujet: Re: problème de collision ? objets bloqués après déplacement. Mar 22 Jan 2013 - 16:41
Alors explication, accroche toi car je ne suis pas sur de bien expliquer.
Je commence par créer mes propres variables de déplacement: hspeed -> h_speed; vspeed -> v_speed; comme ça j'ai un contrôle totale sur le code et non plus de l'automatisé fait par GM.
if(h_speed!=0) Donc si la vitesse horizontal est différente de zéro.
repeat( ceil(abs(h_speed)) ){ repeat(N){Y} : ça répète N fois l'opération Y. ceil(N): retourne la valeur plafond de N (ex: 2.40 devient 3), on met ceil() car si on a 0.20 en vitesse il faut quant même que l'opération s’exécute au moins une fois et aussi car repeat() ne prend que des nombres entiers. abs(N): retourne la valeur absolue de N (ex: -3 devient 3) car encore une fois repeat() n'accepte pas les chiffres négatifs.
Donc ceil(abs(-3.785215 )) retournera 4.
event_user(0); En fait cette ligne ne pas obligatoire et ne sert a rien dans cet l'exemple. Ça appel l’évènement 0 de l'objet qui appel le script. Je met toujours cette ligne car comme ça je peut faire du cas par cas dans tous mes objets en n'ayant qu'un seul script.
if( place_free(x+sign(h_speed),y) ) x+=sign(h_speed); sign(N): renvois soit -1 soit 0 soit 1 celons la valeur de N (négative, nulle ou positive) Donc soit x+=1 ou x+=-1 (pas zéro car on a la premier condition qui est "si la vitesse est différente de 0".
Voilà je pense avoir tout dit même si c'est pas simple à expliquer :s
Elriks Débutant
Messages : 17
Sujet: Re: problème de collision ? objets bloqués après déplacement. Mer 23 Jan 2013 - 8:54
Bonjour,
désolé de pas avoir pu répondre avant, j'ai été kidnappé bien malgré moi pour une soirée au travail.
Alors j'ai testé ton code, effectivement il fonctionne parfaitement pour la collision mais le mouvement est ..comment l'expliquer.. je vais faire une vidéo c'est plus simple (le déplacement du koala en stand only est normal, j'ai viré tout le code que j'avais inclue pour le déplacement du koala , cela rentrait en collision avec le tien et quand j'appuyais sur une flèche, il partait devant de façon infinie en traversant tout les blocks) :
en gros mon jeu fait 40 cases sur 40 cases, quand le koala se déplace, il doit se déplacer seulement de case en case (mais sans se téléporter) sinon il risque de déplacer 2 blocks en même temps, d’être bloqué pour passer entre 2 block car il est 1mm en trop sur la gauche etc... et le block en lui même ne part plus devant mais seulement sur 1mm, plus comme avant, je pense que c'est lié au fait qu'on a pris le controle sur h et v_speed , du coup il donne plus une valeur continue de vitesse a l'objet mais seulement pour "1 touche du koala" , si je mets le h_speed a 40 le block se téléportera d'une case etc..
je pense que je devrais juste restructurer le code du step de obj_block et inclure une boucle for ou while au bon endroit, je regarderai cela en rentrant du travail.
Merci beaucoup en tout les cas pour le temps que tu as consacré a cela
for(i=0; i<4; i+=1) { if(!moving && keyboard_check(key[i])) { dir = i moving = true } }
if(moving) { if(place_free(x+lx[dir], y+ly[dir])) { x += lx[dir] y += ly[dir] } else moving = false }
C'est pour des cases de 16*16px, mais tu peut changer la taille dans place_snapped(16, 16)
Pour ce qui est des collisions customs a toi de modifier place_free(x+lx[dir], y+ly[dir]) Tu peut exemple mettre un place_meeting, a toi de voir.
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
Sujet: Re: problème de collision ? objets bloqués après déplacement. Mer 23 Jan 2013 - 14:51
Bonjour, Normalement si tu met que ça dans l'objet block il ne s'arrêtera qu'au contact d'un autre objet solide.
S'il se déplace que par Xpx c'est que tu doit avoir une autre condition dans ton objet quelque par qui l’arrête.
Pour ce qui est pour le Koala c'est normal, après tu peut laisser ton ancien code dans l'objet du Koala peut être que ça fonctionnera (je n'ai pas GM Studio je ne peut pas voir ton projet), sinon tu as le code d'Oni qui est très bon aussi.
Elriks Débutant
Messages : 17
Sujet: Re: problème de collision ? objets bloqués après déplacement. Mer 23 Jan 2013 - 15:22
Merci a vous 2, je passe tout mon temps libre a apprendre le GML mais j'ai encore du boulot, je test tout cela ce soir
Contenu sponsorisé
Sujet: Re: problème de collision ? objets bloqués après déplacement.
problème de collision ? objets bloqués après déplacement.