[Problème]Création map

Bonjour,

J’ai un nouveau problème. Voulant faire quelques manipulations pour la création d’une map, j’ai voulu faire un système avec un bloc invisible se déplaçant vers le bas et créant à intervalles régulières des blocs eux aussi invisibles. Une fois que ce bloc a dépassé une certaine limite, il est supprimé et tous les blocs invisibles précédemment crées sur la colonne se mettent à se déplacer vers la gauche, créant des blocs de pierre. Ce qui , je dois l’avouer, est plutôt classe :smiley: . Cependant ce le serait bien plus si les blocs de pierre se créaient à intervalles régulières sur CHAQUE bloc invisible se déplaçant vers la gauche, et non, ce qui est en ce moment le cas, seulement sur le bloc invisible situé le plus en haut.

Pour illustrer tout ça, car je sais que ça doit être assez dur à comprendre, voici les codes :slight_smile: :

Maintenant une image de la scène lors de la création des blocs (dans le jeu les blocs blancs seront bien sûrs cachés) :

Donc ma question est: comment faire pour que la création de blocs se fasse sur chaque bloc de création de ligne? :stuck_out_tongue:

Merci d’avance :slight_smile: .

Personne? :frowning:

Bonjour,

Après avoir regarder ton code rapidement je pense que le probleme vient du chronomètre qui permet de créer des blocs toutes les 1 seconde, je pense que c’est lui qui empêche les autre lignes de ce creerr

Je viens de supprimer le chronomètre et en effet c’est bien ça :slight_smile: . Merci :stuck_out_tongue: . Par contre maintenant sans chrono les blocs se créent trop beaucoup trop rapidement ^^ .

Edit: C’est bon maintenant tout est parfait. En fait maintenant qu’il n’y avait plus de chrono plusieurs dizaines de blocs se créaient à chaque bloc chaque seconde. Pour régler ce problème il m’a juste suffi de modifier la vitesse des blocs lignes pour qu’ils soient si rapides que même si plusieurs blocs se créaient chaque seconde ça fasse quand même des blocs bien alignés et pas superposés. Après quelques essais j’ai trouvé la bonne valeur et puis du coup maintenant la création de tous les blocs se fait en moins d’une seconde :smiley: .

Rebonjour à tous :slight_smile: .

Comment vérifier qu’un objet (ici un de mes blocs de pierre) est entouré d’autres objets (d’autres blocs de pierre) de même nom? Cela me serait utile pour par exemple ne pouvoir poser un bloc que s’il est contre au moins un autre bloc ou encore de pouvoir faire que les blocs tombent lorsque qu’ils ne sont en contact avec aucun autre bloc :slight_smile: .

Cela me permettrait aussi d’améliorer la génération de ma map :stuck_out_tongue: .

Merci d’avance :slight_smile: .

Bonjour

À ta place je créerais un bloc de détection qui fait le tour du bloc à tester. Si il est en contact avec un bloc alors ton bloc est collé à un autre bloc. (test à faire au pixel perfect)

Autre solution :
Faire le test si bloc est en contact avec bloc mais cette fois ci sans le pixel perfect. En effet si le bloc est collé à un autre bloc alors le test marchera car sans le pixel perfect le test s’effectue à deux pixel de plus que la réalité, c’est a dire sur le masque de collision

Merci de ta réponse :slight_smile: . Par contre es-tu sûr que la condition “Si bloc est en contact avec bloc” marche réellement? Car étant donné qu’ils portent le même nom, il me semble que cela testerait alors si le bloc est en contact avec… lui même?

Edit: Pour ce qui est de ta première solution, je vois mal comment je pourrai faire, car faire tourner un point autour de chaque bloc en permanence serait non seulement assez difficile à faire mais ça risquerait aussi de faire ramer mon jeu :stuck_out_tongue: . (Car il ne faut pas oublié qu’il y a des milliers de blocs sur la map) :slight_smile: .

Je pense que “bloc est en contact avec bloc” marche car un objet ne peu pas être en contact avec lui même, enfin tu devrai peut être essayer.

Sinon oui la premiere solution est très lourde, c’est la le problème de la carte en carré.
Tu ne devrai pas tester pour tout les blocs en même temps, seulement 1 par 1 en les parcourant tous.

Et pour que ce soit encore plus optimisé tu devrai faire le test seulement sur les objet visible à l’écran.

Je suppose que tu a activer l’automatisme physique sur les blocs, (moi j’avais fait ça), mais c’est très très lourd aussi, essai de trouver quelque chose pour ne traiter que ce qui est a l’écran ce sera déjà mieu.

Je verrais une autre possibilité : quadriller l’écran d’objets Bloc, et choisir pour chaque bloc quel sera son numéro d’animation.

Ex : animation 0 = bloc invisible et passable
animation 1 = bloc de pierre et impassable
animation 2 = bloc d’eau et passable
etc.

Une fois l’écran rempli de blocs, on utilise les coordonnées de chaque bloc pour déterminer son visuel et donc son usage en jeu.
Comme si on créait une carte RPG Maker, où chaque tile invisible prend le visuel de la tile sélectionnée, avec les propriétés de passabilité associée.

Avec des blocs de 20x20 pixels, on arrive une carte de 20 000 x 20 000 pixels. Au delà, je pense que GD va s’écrouler.

En effet j’ai bien activé l’automatisme physique sur chacun de mes blocs :slight_smile: . Sinon j’ai réussi à faire qu’on ne puisse poser un bloc que si il est en contact avec d’autres blocs :stuck_out_tongue: .

Pour que vous ayez un aperçu de mon jeu voilà une version jouable :slight_smile: : 7wnsv8c82l.1fichier.com/

Bon pour l’instant il n’y a pas de menu etc mais mais ça ne saurait tardé :smiley: .

Surtout n’hésitez pas à me dire ce qui ne va pas :stuck_out_tongue: . Là je compte bientôt rajouter un inventaire ainsi que des blocs de terre.

Edit: a oui j’ai oublié de demandé: Comment tester si les objets sont en dehors de l’écran? Je n’ai pas trouvé de condition spécifique.

Je reposte pour parler d’un nouveau problème qui m’embête très très fortement. J’essaye de faire un inventaire qui restera en permanence en haut de l’écran, jusque là rien d’exceptionnel. Cependant lorsque j’essaye de mettre un objet sur un autre calque que celui de base il disparaît. Pourtant j’ai bien mis une caméra, j’ai mis le calque au dessus de celui de base etc… Niveau des événements pareil j’ai tout essayé comme par exemple le mettre l’objet sur le calque de base au début puis après le mettre sur l’autre calque. Seulement toujours le même problème l’objet disparaît. Par contre j’ai essayé sur une nouvelle scène, vierge, et là bizarrement ça marche… Une idée?

Par hasard, quand tu places l’objet sur l’autre calque, tu es bien à la position initiale (0;0) ?

C’est à dire?

Edit: A oui j’ai compris. En fait non mon Personnage apparaissant aléatoirement sur la map, il n’est pas en position initiale 0 0. Ce qui expliquerait pourquoi ça marche sur l’autre scène qui est vierge et pas celle-ci. Comment remédier à ce problème? Et qu’est-ce concrètement la position initiale d’un calque? Merci :slight_smile: .

Edit2: Ah c’est bon j’ai réussi!! En fait j’ai centré la caméra de mon second calque sur mon personnage (une seule fois) une fois que celui-ci a été crée. Du coup maintenant ça marche nickel!! Encore merci pour ta réponse, ne connaissant pas les calques j’aurais jamais trouvé :smiley: .

Bonjour,

Pour avoir eu le même ploblème. le calque que tu utilise permer de créer des insterface qui ne bouge pas ou autre. jusque là, pas de problème. Par contre, il faut pour les objets, si tu clique sur propriètè, tu as position ou un truc dans le genre (pas le logiciel sous les yeux), normalement, il est à 1. Passe le voir à deux. En gros, tu le mes au 2eme plan mais vers toi.

Pour mes jeux, j’utilise souvant ça et crois moi, au debut, je me suis bien cassé la tête. Le claque du monu option te permet juste de regroupé des truc ou de bloqué les objet de ce calque. TOus ce joue dans les propriètè de chaque objet par la suite.

SI tu trouve pas, demain je te fais un screen directement

Pas besoin ce problème de calque est déjà réglé :wink: .

Oups, j’ai lu ton message en diagonal. Effectivement, tu avais trouvé. désoler :frowning: