| [RÉSOLU] Being solid or not to be it. | |
|
|
Auteur | Message |
---|
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: [RÉSOLU] Being solid or not to be it. Lun 19 Sep 2011 - 9:32 | |
| J'ai un soucis d'ordre "bug de GM". Vive les petits trucs incompréhensibles qui font que la programmation est prise de tête. Bon voici mon problème, j'utilise cette ligne: - Code:
-
if( instance_place(obj_hero.x,obj_hero.y-1,all.solid) ) Pour savoir si mon héros porte quelque chose de solide sur la tête. Sauf que j'ai un problème. Cet objet me revois "true" (ce qui est normal) : - Citation :
Information about object: obj_block
Sprite: block1 Solid: true Visible: false Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite> Et celui-ci "false" (ce qui ne devrais pas être le cas): - Citation :
Information about object: obj_block_magique
Sprite: block_magique Solid: true Visible: true Depth: 0 Persistent: false Parent: <no parent> Mask: <same as sprite>
Destroy Event: create instance of object obj_explosion at relative position (0,0)
Step Event: execute script func_gravite with arguments (0,0,1,1,0)
J'ai tester un : - Code:
-
collision_line(x1,y1,x2,y2,all.solid,true,true) avec mon objet "obj_block_magique" qui bouche ma LDV et ça me renvois aussi false. J'ai essayé de supprimer la fonction "func_gravite()" du step mais ça ne change rien, pareille pour le "if (destroy())" et j'ai même essayer de mettre le même sprite que mon objet "obj_block". Et pour finir je l'ai supprimer et recréé, et toujours pas le résultat souhaité (et logique)... Je deviens fous. Quelqu'un à une idée de où ça peut venir?
Dernière édition par Caly le Lun 19 Sep 2011 - 23:15, édité 1 fois |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [RÉSOLU] Being solid or not to be it. Lun 19 Sep 2011 - 10:54 | |
| C'est parce qu'on ne peut pas utiliser all.solid (pas a ce que je sache en tout cas :p)
|
|
| |
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: [RÉSOLU] Being solid or not to be it. Lun 19 Sep 2011 - 11:14 | |
| Pourtant j'ai lu ça dans une doc en anglais je ne sais plus où.
Et je l'utilise plusieurs fois dans plusieurs de mes fonctions et ça fonctionne.
D’ailleurs le all.solid ou other.solid quant il s'agit de mon objet "obj_block" me revois toujours true que ce soit pour un " instance_place" ou "collision_line".
C'est juste pour l'objet "obj_block_magique" qu'il me revois systématiquement false.
Je ne vois pas ce qu'il y a de différent entre les deux objets.
Donc pour savoir si je porte un objet de dois faire une condition ou switch pour chaque objet ? |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [RÉSOLU] Being solid or not to be it. Lun 19 Sep 2011 - 11:23 | |
| Ça ce déroule comment l'action de porter un objet ?
Car si c'est un truc du genre : if(place_meeting(x+1, y, objet_magique) && keyboard_check_pressed(vk_space)) { ceQueJePorte = instance_place(x+1, y, objet_magique) actionPorter = true }
ben t'assigne juste une variable actionPorter et le tour est joué :p |
|
| |
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: [RÉSOLU] Being solid or not to be it. Lun 19 Sep 2011 - 11:36 | |
| Enfait je voudrais faire un truc completement automatisé. Si je suis ton code : - Code:
-
instance_place(x+1, y, objet_magique) Ça veux dire que je ne peut porter que objet_magique. Mais si je veux porter un trampoline je doi refaire le meme code mais avec : - Code:
-
instance_place(x+1, y, objet_trampoline) (ou utilisé un switch) Ce qui est loin d'être automatisé. Ce que je voudrais c'est : - Code:
-
Si c'est un objet solide et qu'il dispose de la fonction gravite - je peut le porter. Mais c'est bon au lieu de faire "all.solid" je vais faire "all" et exécuter une seconde condition pour savoir s'il est solide ou non. Ce qui m'ennuis c'est juste que le système exécute une condition de plus et que le code reste moins clair, mais si j'ai pas le choix on va passer là tampis. Mais je ne comprend pas pourquoi all.solid ou other.solid ne fonctionne pas. Va falloir que je re-modifie ma fonction de ligne de vue pour éviter certains bugs... grrr. |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [RÉSOLU] Being solid or not to be it. Lun 19 Sep 2011 - 11:45 | |
| Utilise l'hérédité :p |
|
| |
supmaster004 Utilisateur confirmé: Rang *****
Messages : 2188 Localisation : x=23.256842 y=43.456879 Projet Actuel : Faire des parodies de jeux en 1h
| Sujet: Re: [RÉSOLU] Being solid or not to be it. Lun 19 Sep 2011 - 11:54 | |
| sinon, sous gm les noms des objets sont traduits en doubles par ordre d'apparition.
En gros, supposant que comme le dit oni, la variable all.solid n'existe pas, elle est traitée comme valant "0"
or, si le premer objet que tu as crée est obj_block, son numéro d'objet est 0.0 (donc 0) et si tu crée un autre objet juste après (obj_block_magique par exemple) son numéro d'objet est 1.0 (donc pas all.solid)
ce que je te conseille, c'est de faire comme oni a dit et de mettre obj_block comme parent de ton obj_block_magique. |
|
| |
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: [RÉSOLU] Being solid or not to be it. Lun 19 Sep 2011 - 12:21 | |
| Merci supmaster004 pour l'explication trés clair, je crois avoir compris. Et ça conincide vus que mon objet _obj_block_magique est un bloc créé par mon personnage et non initialisé dans la room. Parcontre je suis dégouté d'avoir était conduit en erreur par mes lecture d'ailleurs, grrr. Donc exit "all.solid"/"other.solid" dans mes scripts. En sachant d'ou viens le probleme voici ce que j'ai fait : - Code:
-
//porter un objet. var objet; objet = instance_place(obj_hero.x, obj_hero.y-1, all); if(objet != noone) if(objet.solid){ with (objet) if(variable_local_exists("vh") && variable_local_exists("vv")) //variable initialisé dans "func_gravite". action_porter = true; } Si c'est plus simple et surtout plus léger par hérédité je veux bien un lien sur une explication de comment ça fonctionne s'il vous plait. Je suis quand même un peut énervé sur le fait d'avoir perdu plus d'une heure à chercher pourquoi ça ne fonctionné pas, grrr! |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [RÉSOLU] Being solid or not to be it. Lun 19 Sep 2011 - 12:39 | |
| En gros quand tu fait instance_place(x, y, obj), ça va vérifier la position de tous les objets de type obj. Mais si l'objet obj est le parent d'autres objets, alors ça feras la vérification aussi pour ces objets. De ce fait tu peut sélectionner les objets auquel tu veux assigner l'action 'porter' en leur mettant tous le même parent, et en choisissant ce parent pour obj. |
|
| |
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: [RÉSOLU] Being solid or not to be it. Lun 19 Sep 2011 - 12:56 | |
| Ha cool, tu viens de résoudre sur quoi je bossais en se moment même (la fonction de ligne de vue). Nickel ça.
Et l'hérédité exécute aussi les scripts du parent? On ne peut mettre qu'un parent?
|
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [RÉSOLU] Being solid or not to be it. Lun 19 Sep 2011 - 13:36 | |
| Alors l'hérédité exécute tous les event du parent, sauf si tu met du code dans cet event. Bien sur il existe la fonction event_inherited() pour demander de quand même exécuter l'autre event en plus.
Et oui, on ne peut mettre qu'un parent :/ |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: [RÉSOLU] Being solid or not to be it. Lun 19 Sep 2011 - 22:39 | |
| euuuh dites, vous savez que le mot clé 'solid' existe pour les fonctions de collisions? Ca retourne 'true' si on est en collision avec une instance de nimporte quoi qui est ... solid : bref : - Code:
-
with(instance_place(obj_hero.x,obj_hero.y,solid)){
//execute ce qu'il faut avec une instance solide si elle existe
} _________________ Tous les icones de gm utilisables sur le cbna ICI |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [RÉSOLU] Being solid or not to be it. Lun 19 Sep 2011 - 22:42 | |
| Not possible. solid contient 1 ou 0, hors c'est les valeurs qui sont attribués aux 2 premiers objects.
|
|
| |
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: [RÉSOLU] Being solid or not to be it. Lun 19 Sep 2011 - 23:14 | |
| @Mad_Doc: Je confirme pour le fait que ça ne fonctionne pas de mettre le mot clef "solid" seul; j'ai déjà essayé.
Et par logique je pense comme onilink_ sur le fait que "solid" est un boléen.
@onilink_: En gros c'est vraiment un truc énorme et hyper puissant l’hérédité.
Par contre ça suxx un peut le fait de ne pouvoir mettre qu'un seul parent.
Car si tu as comme parent : - Bloquant_la_LDV - Objet_pouvant_etre_porte
Tu ne peut en choisir qu'un seul, c'est dommage.
Par contre pour la gestion d'une IA c'est excellent. suffis de mettre le parent "ennemie" dans les objet dit 'ennemie' et de définir un comportement avec une variable définis dans le fils.
genre : peureux, agressif etc...
En tout cas merci pour l'info, ça va réellement me servir! |
|
| |
supmaster004 Utilisateur confirmé: Rang *****
Messages : 2188 Localisation : x=23.256842 y=43.456879 Projet Actuel : Faire des parodies de jeux en 1h
| Sujet: Re: [RÉSOLU] Being solid or not to be it. Lun 19 Sep 2011 - 23:42 | |
| bienvenue sur le cbna |
|
| |
M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: [RÉSOLU] Being solid or not to be it. Mar 20 Sep 2011 - 22:48 | |
| Alors là je comprends plus rien... avant de poster mon message d'hier, j'ai vite fait testé... et ça marchait... Je reteste ce soir sur un autre PC, en refaisant vite fait un truc, ça marche plus... il faut vraiment que je retrouve comment j'ai fait/sur quelle version de gm ça marchait. j'ai surement pas rêvé :p [edit] en attendant, c'est vrai que seul un - Code:
-
with(instance_place(mouse_x,mouse_y,all)){if !solid{exit;}
//blablabla
}
ou équivalent fonctionne... faut que je retrouve ce que j'ai fait hier! _________________ Tous les icones de gm utilisables sur le cbna ICI |
|
| |
Contenu sponsorisé
| Sujet: Re: [RÉSOLU] Being solid or not to be it. | |
| |
|
| |
| [RÉSOLU] Being solid or not to be it. | |
|