RMEx
RMEx

Community


Vous n'êtes pas connecté. Connectez-vous ou enregistrez-vous

Générateur de map (Fall release)

Voir le sujet précédent Voir le sujet suivant Aller en bas  Message [Page 1 sur 1]

Bonjour,

L'une des nouveauté de Fall release (un de mes 2 projets en cour) et d'avoir une map généré de maniére aléatoire et en image.

Il n'y a pas grand chose a voir mais :


Le tout tien dans ce petit event en processus parallèle :
Event - EV001
| > Appeler Script : parallax_show(1, "Parallaxe", -100, 255, 0, 2) #Créé le paeallaxe de la map
| > Condition : Interrupteur [0001:Lancement] == Désactivé
| >| > Appeler Script : L[:id_image] = 1
| >| > Appeler Script : L[:nom_image] = random(1, 15) #Choisi un tronçon de map au hasard
| >| > Appeler Script : picture_show(L[:id_image], "Map/#{L[:nom_image]}", 0, 416) #Invoque la 1er image
| >| > Appeler Script : picture_move(L[:id_image], 0, -198, 100, 100, 150, false)
| >| > Opération : Interrupteur [0001:Lancement] Activé
| >| >
| > Sinon
| >| > Appeler Script : L[:go] = picture_y(L[:id_image]) <= 294
| >| > Condition : Script : L[:go]
| >| >| > Appeler Script : L[:id_image] += 1 #Augmente l'id de l'image
| >| >| > Appeler Script : L[:id_image] %= 10 #Remet a zero les ID une fois arrivé a 10
| >| >| > Appeler Script : L[:id_image] = 1 if L[:id_image] == 0 #Sécurité en cas ou l'id est égal a 0
| >| >| > Appeler Script : L[:nom_image] = random(1, 15) #Choisi un tronçon de map au hasard
| >| >| > Appeler Script : picture_show(L[:id_image], "Map/#{L[:nom_image]}", 0, 416)  
| >| >| > Appeler Script : picture_move(L[:id_image], 0, -198, 100, 100, 150, false)
| >| >| >
| >| > Fin - Condition
| >| >
| > Fin - Condition
| >

Alor, vous en pensé quoi ? ^^

Voir le profil de l'utilisateur

nuki

avatar
Admin
Très astucieux ! Et comment comptes tu gerer les collisions :) ?

Voir le profil de l'utilisateur
Le 1er chois qui s’offre a moi est le pictures_perfect_collide? mais celle si lag énormément. je vais donc opter pour la commande pixel_in_picture?, en créant 4 points autour du personnage et créé un système qui détectera constamment si un de ces 4 points n'est pas dans une des images qui affiche la map.
ont pourais par éxemple ce retrouvé avec ça :
Event - EV002
| > Appeler Script : (1..10).each {|i| L[:collide?] = pixel_in_picture?(i, L[:px], L[:py], true)}
| > Appeler Script : (1..10).each {|i| L[:collide?] = pixel_in_picture?(i, L[:px]+32, L[:py]+32, true)}
| > Appeler Script : (1..10).each {|i| L[:collide?] = pixel_in_picture?(i, L[:px], L[:py]+32, true)}
| > Appeler Script : (1..10).each {|i| L[:collide?] = pixel_in_picture?(i, L[:px]+32, L[:py], true)}
| >
Après c'est simple, si L[:collide?] == true alor .........

Smile

Voir le profil de l'utilisateur
J'ai peur qu'il y ai un soucis dans ton code de vérification. En effet à chauqe itération de tes boucles tu réassigne une nouvelle valeur à ton label, écrasant celles assignées avant.
Du coup à la fin de ton code la valeur du labeur est seulement pixel_in_picture?(10, L[:px]+32, L[:py], true) et les autres condition ne sont pas vérifiées.

Je te propose de fix pour palier à ça :

Code:
L[:collide?] = []
(1..10).each {|i| L[:collide?] << pixel_in_picture?(i, L[:px], L[:py], true)}
(1..10).each {|i| L[:collide?] << pixel_in_picture?(i, L[:px]+32, L[:py]+32, true)}
(1..10).each {|i| L[:collide?] << pixel_in_picture?(i, L[:px], L[:py]+32, true)}
(1..10).each {|i| L[:collide?] << pixel_in_picture?(i, L[:px]+32, L[:py], true)}

et pour vérifier

Code:
L[:collide?].any?{|i| i == true}

qui si je ne m'abuse peut être compressé en

Code:
L[:collide?].any?

Voir le profil de l'utilisateur

5

Contenu sponsorisé


Voir le sujet précédent Voir le sujet suivant Revenir en haut  Message [Page 1 sur 1]

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum