| collision gml | |
|
|
Auteur | Message |
---|
K.marx Petit bavard
Messages : 56
| Sujet: collision gml Lun 26 Nov 2012 - 21:22 | |
| Bonjours tous le monde, je cherche un équivalent en gml pour l'event collision. J'avais pensé à place_meeting() mais ça ne marche pas comme je le voudrais. Je fait un jeu de plateforme et en mettant dans obj_sol move_contact_solid(270,15) vspeed=0 tout marche bien mais si je fais dans un step: if place_meeting(x,y,obj_sol){ move_contact_solid(270,15) vspeed=0} alors mon perso s'enfonce dans le sol.
Dernière édition par K.marx le Ven 30 Nov 2012 - 10:21, édité 1 fois |
|
| |
Mass *Excellent utilisateur*
Messages : 3351 Localisation : Dans une canonnière wookie. Projet Actuel : Monter des trucs et des machins
| Sujet: Re: collision gml Lun 26 Nov 2012 - 21:40 | |
| Parce que place_meeting se base sur la position x et y du sol, et non sur la taille de son sprite. Tu devrais creuser du côté des collision_rectangle pour voir |
|
| |
K.marx Petit bavard
Messages : 56
| Sujet: Re: collision gml Lun 26 Nov 2012 - 21:55 | |
| merci de t'a réponse, j'ai fais:
if collision_rectangle(x-11.5,y-50,x+11.5,y+58,obj_sol,1,1) {move_contact_solid(270,15) vspeed=0}
Mais le résultat est exactement le même... Faudrait pas faire un truc genre avec une boucle while ?? |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: collision gml Lun 26 Nov 2012 - 22:04 | |
| Essaie de faire place_meeting(x,y+1,obj_sol), je comprend pas comment il utilise les sprites pour les collisions, mais en général ca marche.... |
|
| |
K.marx Petit bavard
Messages : 56
| Sujet: Re: collision gml Lun 26 Nov 2012 - 22:15 | |
| Et bien ça fonctionne le perso ne s'enfonce pas dans le sol seulement il ne peut plus sauter puisque le sol est à y+1... Il n'y a pas une fonction qui détecte simplement si au moins 2 pixels sont en collision de la même manière que " " ? |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: collision gml Lun 26 Nov 2012 - 22:19 | |
| ben tu rajoute un else après ma condition, et tu fais un autre place_meeting(x,y,obj_mur) then y+=1. Mais c'est étonnant, quand je fais ainsi j'ai pas de problème pour sauter. C'est quoi ton code de saut ? |
|
| |
K.marx Petit bavard
Messages : 56
| Sujet: Re: collision gml Lun 26 Nov 2012 - 22:35 | |
| mon code pour le saut est: if (keyboard_check(vk_up)||keyboard_check(vk_space))&& laps_saut==1 { if !place_free(xprevious,y+1) || !place_free(x,y+1) {sprite_index=spr_jump; etat=1;vspeed=-puissance_saut; image_speed=0.7; alarm[1]=18; image_index=0} } if keyboard_check_pressed(vk_up)|| keyboard_check_pressed(vk_space) {alarm[0]=7; laps_saut=1} Je n'ai jamais eu à me servir de then donc je n'ai pas trop compris ce que je devais faire j'ai fait: if place_meeting(x,y+1,obj_sol) {vspeed=0; move_contact_solid(270,15)} else {place_meeting(x,y,obj_sol)then y+=1 } Mais c'est pas ça bien sûr ^^ |
|
| |
K.marx Petit bavard
Messages : 56
| Sujet: Re: collision gml Lun 26 Nov 2012 - 22:40 | |
| Mais de toute façon c'est logique que je ne puisse pas sauter puisque je dit que vspeed=0 si le sol est à 1 pixel sous le perso ?
if place_meating(x,y+1,obj_sol){ move_contact_solid(270,15);vspeed=0} |
|
| |
K.marx Petit bavard
Messages : 56
| Sujet: Re: collision gml Lun 26 Nov 2012 - 22:53 | |
| Nan mais en fait mettre place_meeting(x,y+1,obj_sol) ça reviens au même que de faire if place_meeting(x,y,obj_sol) Dans les 2 cas le perso s'enfonce. Quand j'ai dit "Et bien ça fonctionne le perso ne s'enfonce pas dans le sol seulement il ne peut plus sauter puisque le sol est à y+1... Il n'y a pas une fonction qui détecte simplement si au moins 2 pixels sont en collision de la même manière que " Event - Collision " ? "
C’était par ce que j'avais mis un "!" devant place_meeting(x,y+1,obj_sol) par erreur. |
|
| |
D-z Utilisateur confirmé: Rang *****
Messages : 1611 Localisation : Montpellier
| Sujet: Re: collision gml Lun 26 Nov 2012 - 23:38 | |
| Pour info l'event collision fait un bête place_meeting(x,y,machin), qui lui utilise le masque de collision actuel de l'objet appelant translaté de x et y. Par contre il n'est pas appelé au même moment que l'event Step (je sais pas s'il l'est avant ou après), d'où différence de comportement. _________________ Home is not a place, it's a feeling.
|
|
| |
K.marx Petit bavard
Messages : 56
| Sujet: Re: collision gml Mar 27 Nov 2012 - 4:51 | |
| Ouai c'est bien ce qui me semblais. Mais alors je ne peux pas avoir l'équivalence d'un simple event collision en gml ? Pourquoi ça marche pour térence ? Je fais pourtant la même chose, j'ai même essayer de recréer un projet tout con avec un objet sol et un objet qui tombe et pas moyen de faire s’arrêter l'objet pile sur le sol. |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: collision gml Mar 27 Nov 2012 - 7:21 | |
| Je regarderai mes anciens codes ce soir et je te les passe. Et pour info, then n'est pas obligatoire, c'est juste pour que ce soit plus clair : après un if, soit tu met des accolades pour un bloc d'instructions, soit juste une ligne sans accolades, et tu peux mettre then pour mieux visualiser le code. |
|
| |
Yautja Débutant
Messages : 26
| Sujet: Re: collision gml Mar 27 Nov 2012 - 15:46 | |
| |
|
| |
K.marx Petit bavard
Messages : 56
| Sujet: Re: collision gml Mar 27 Nov 2012 - 18:23 | |
| Merci térence pour tes explications. Yautja tu n'a pas du bien comprendre, dans ta video tu te sers de l'event collision et c'est précisément ce que j'essaie d'éviter. |
|
| |
Yautja Débutant
Messages : 26
| Sujet: Re: collision gml Mar 27 Nov 2012 - 20:00 | |
| Désolé, j'avais pas compris. |
|
| |
K.marx Petit bavard
Messages : 56
| Sujet: Re: collision gml Mar 27 Nov 2012 - 20:13 | |
| Ya pas de mal |
|
| |
K.marx Petit bavard
Messages : 56
| Sujet: Re: collision gml Ven 30 Nov 2012 - 10:35 | |
| Si quelqu'un a une réponse ça m'intéresse toujours. J'avais vu il me semble qu'on pouvais utiliser une boucle pour les déplacements pour être parfaitement collé à un mur si on rentre en collision avec lui, si par exemple notre perso court très vite qu'il ne rentre pas de quelques pixel dans le mur. Mais pas moyen de me rappeler comment faire, et je me dis que c'est sûrement le même principe pour avoir une collision propre contre le sol lorsque le perso tombe. |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: collision gml Ven 30 Nov 2012 - 12:18 | |
| Avec une boucle for : - Code:
-
for (i=0;i<vitesse;i+=1) { //ton code } |
|
| |
K.marx Petit bavard
Messages : 56
| Sujet: Re: collision gml Ven 30 Nov 2012 - 13:39 | |
| Ok, je pensais qu'y avais une histoire de place_free dans la boucle. Je testerai ça ce soir merci. |
|
| |
Térence Utilisateur confirmé: Rang *****
Messages : 2213 Localisation : Oui
| Sujet: Re: collision gml Ven 30 Nov 2012 - 18:21 | |
| Ben oui tu la met dans la boucle : par exemple pour avancer vers la droite de 5 pixels : for(i=0;i<5;i+=1) { if place_free(x+1,y) x+=1 } |
|
| |
K.marx Petit bavard
Messages : 56
| Sujet: Re: collision gml Ven 30 Nov 2012 - 19:34 | |
| Merci beaucoup, j'ai pas encore eu le temps de tester mais bon c'est tous con enfaite. Merci encore. |
|
| |
Contenu sponsorisé
| Sujet: Re: collision gml | |
| |
|
| |
| collision gml | |
|