[résolu] Brouillard de guerre

Bonjour,

Je souhaite créer un brouillard de guerre, sur un projet 2D en vue de dessus qui simulera l’angle de vision d’un humain …
Cad que sur les côtés et derriere, objets, ennemis n’apparaissent pas …

J’ai testé un cône positionné sur le joueur qui sert de masque de colision, qui tourne et bouge avec lui …

J’ai fait une variable globale “visibilité” 0 (caché) et 1 (visible) … Et programmer les colisions sur 2 objets que j’ai dupliqué 2 fois chacun.

Ca marche mais le probleme c’est que ça rend visible/invisible tous les objets d’un coups au lieu de celui qui est en collision avec le cône …
Comment rendre chaque objet provenant de la même source de la biblio des objets, indépendant des autres ?

Cordialement.

Edit [résolu]
GD2.jpg

La variable globale ne sert à rien pour le moment.

Soit tu utilises une variable initiale (une variable attachée à l’objet).
Soit tu fais directement :

Si bdg en collision avec obstacle afficher l'objet Si bdg pas en collision avec obstacle masquer l'objet

Attention mtarzaim, une variable initiale n’est PAS forcément une variable d’objet. C’est juste un variable au lancement de la scène, qui peut être une variable globale, de scène, d’objet ou d’instance.

Ok merci à vous,

En variable d’objet c’est clair, ça marche tout de suite mieux … :unamused:

Dsl pour mes questions de noob :cry:

Mais j’ai une question ! Si dans le game-design j’ai un bestiaire de 50 têtes + 30 items + 40 objets divers, qui bien sûr, sont tous sujets soumis au brouillard de guerre, ça ne risque pas de ramer sec ? 240 entrées à programmer (50+30+40)*2 commande/objet (on/off) que ce soit en variable ou en simple collision ?

Ou alors une commande qui permette au cône “champs de vision” de masquer/afficher tous les objets sans distinction, plutôt que de rentrer chaque objet un par un ?

Mais aussi, est-il possible d’appliquer un masque sur un calque supérieur qui cacherait tout ce qui est hors champs visuel, ou une partie du calque inférieur ? D’autant plus qu’avec des dégradés de transparence sur les abords du champs de vision, ça permettrait une apparition en douceur des objets … Et pkoi pas de la map aussi ?

Je sais, ça fait pas mal de question … :neutral_face:

Bonne aprèm, cordialement.

Il suffit que tu crées un groupe d’objet (dans l’éditeur d’objets à droite), puis tu mets tes objets dedans. Enfin, dans tes événements, au lieu de faire les actions et les conditions sur chaque objet, tu fais les actions et les conditions sur le groupe d’objet (qui est considéré comme un objet).

AAaaahhhh !!! C’est donc à ça que servent les groupes d’objets, à les traiter en masse ?!

Merci de cette info, je débute et j’ai encore du mal … :imp:

Je test ça demain, merci bcp :wink:

Bons projets à vous :slight_smile:

Re,

Non ça ne marche pas par groupe … Pour une variable “visibilité” ça fait apparaitre/disparaitre tous les objets d’un coup.

A mon avis pour un brouillard de guerre, le mieux est je pense 3 calques.
1 - 1 comportant les tuiles de la map.
2 - 1 pour le persos, les ennemis, les items ect …
3 - 1 pour le masque qui projette la map du calque 1 tout en masquant la partie souhaitée.

Vous en pensez quoi, c’est possible ?

Si ta variable “visibilité” est globale comme dans ton impression d’écran, c’est sûr que tous les objets vont être cachés. Il faut utiliser une variable d’objet (avec comme objet le groupe).

Merci pour ta réponse.

En fait non, les variables globales je les ai remplacé par des variables sur objets, mais comme je dis “rendre visible ou invisible tout un groupe”, même en variable d’objet, ça me les fait tous apparaitre/disparaitre en même temps … Ce qui est un peu logique, ou bien j’ai râté un épisode.

En définitive je pense qu’un masque sur un calque est plus approprié, ne nécessite plus de traiter les objets par des viariables …
De même que pour un str en vue de dessus je pense, des tuiles disparaissant du calque supérieur en fonction des zones explorées me semblent plus léger à traiter.

Je passe par ici pour noter quand même que les groupes sont bien implémentés dans Game Develop et qu’il y a de forte chance que, si un évènement relatif à un groupe ne fait pas ce que vous voulez, c’est que le soucis doit être du coté des évènements et que ce n’est pas un bug : Revérifiez à deux fois vos évènements ou repostez une capture d’écran au besoin. :slight_smile:

Bonsoir ^^

Je n’ai nullement parlé de bug … ?!
Et oui, j’ai compris à quoi servent les groupes d’objets, comme par exemple les traiter en masse avec une seule fonction ou variable, plutot qu’une par objet … Ca ok !

Juste que ça ne saurait s’appliquer je pense à l’élaboration d’un brouillard de guerre, qui demanderait une variable si ce n’est 2/objet, alors que 3 calques et un masque et hop, le tour est joué !

Enfin je pense … Si vous voyez autre chose de mieux je suis tout ouïe ^^

Merci de votre réponse, bonne soirée.

Non, tu as mal compris l’intérêt des groupes, ils traitent bien tous les objets d’un groupe indépendamment, chacun des objets du groupe a sa variable “visibilité” dans ton cas. C’est juste tes événements qui ne sont pas justes.

Euuuh, yes …
Mais sur le wiki compilgames, concernant les groupes, je lis ceci :

“Edition des groupes d’objets
L’éditeur d’objets possède un onglet permettant de modifier les groupes d’objets :
Chaque groupe d’objet contient les noms de 1 ou plusieurs objets. Il est ensuite possible de faire référence à CES objets dans l’éditeur d’évènements en notant simplement LE nom du groupe.”
Pour ajouter un groupe, utilisez le ruban. Vous pouvez ensuite modifier les objets contenus dans le groupe en double cliquant sur le groupe pour l’éditer.
Et puis honnêtement, si je veux que “obstacle1” disparaisse quand je suis dos à lui, je ne vois pas comment cela pourrait etre possible en indiquant juste le nom du groupe, comment le process pourrait devnier que je fais référence à ce oment là davantage à “obstacle1” qu’“obstacle2” ?

Donc si on fait un variable pour le groupe, elle va s’appliquer à tous les objets … Ce qui a pour conséquence, de rendre visible/invisible tout le groupe en mm temps …
En tout cas j’ai eu beau essayé de faire des variables, globales, d’objets, de scènes, par un groupe, je n’arrive pas au résultat escompté ! :confused:

Non, Game Develop choisit bien les bon objets, par exemple :

Soit “obstacle” un groupe contenant “Obstacle1”, “Obstacle2”, “Obstacle3”.

La variable "visibilité" de obstacle est =0 Masquer obstacle La variable "visibilité" de obstacle est =1 Afficher obstacle

Dans le 1er événement, Game Develop va appliquer les actions uniquement sur les objets ayant leur variable “visibilité” = 0, il va donc cacher juste les objets qu’il faut.
Cela marche de la même manière pour le second événement.

Donc, montre-nous un screenshot de tes événements car c’est toi qui fait mal le boulot.

Apres une petite semaine d’apprentissage, à peine, je ne sais pas si on peut encore parler de “boulot” … J’avoue ne pas bien saisir vu que c’est nouveau pour moi.
Je n’ai pas de screenshot à fournir puisque j’ai détruit le projet (brouillard de guerre) vu que ça ne marchait pas, projet qui comportait 1 player, un viseur et 2 obstacles, je retenterai plus tard !

Merci à vous pour vos réponses et désolé encore …

Bonne fin de soirée à vous, et bons projets !

Pas de soucis, n’hésite pas à reposer une question plus tard, on arrivera peut être à être plus clair sur le sujet :slight_smile:

Fiouuuuuhhhh !!
Et bien ça aura été laborieux :cry:

Avoir décroché qqs jours a dû permettre à mon cerveau de se remettre en place, surement, j’vois que ça !

En réalité, je ne sais même pas comment ni pourquoi ça ne marchait pas ! Là je viens de re-tester à nouveau et ça marche exactement comme tu me l’avais dit ! Et à mon avis j’avais dû m’emmêler les pinceaux dans les noms d’objets, de groupes et faire un gros cocktail, alors forcemment …

Donc effectivement, tous les objets d’un même groupe comportant une variable sont influencé indépendamment les uns des autres !

Bon désolé pour ce cafouillage et merci d’avoir pris le temps de m’éclairer :blush:

Résolu donc, merci encore :slight_smile:

Bonne soirée à vous.