loucheman Très bonne participation
Messages : 115
| Sujet: Script déplacement : jeu platforme style mario Dim 20 Mai 2007 - 20:39 | |
| Bonjour à tous, voici quelques scripts qui pourront vous être utiles pour vos futurs jeux de platforme genre Mario... Voici un .gm6 mettant en vedette les scripts: scriptplatforme.gm6 - 0.02MBJ'ai mis les scripts à la suite de ce message au cas où le lien tomberait mort... j'espère que cela vous sera utile ! note : le script DeplacementCheckCollision sert à éviter que le personnage ne soit absorbé par un mur et VerifTouchesPesees est facultatif, c'est en fait ce qui remplsce tous les événements de touches appuyées dans mon jeu... Loucheman Liste des scripts à créer: CheckCollision: Détection d'une collision dans une direction particulière (haut,bas,gauche,droite). - Code:
-
//Script : CheckCollision //Par Loucheman, Crédit apprécié si vous utilisez ce script !
//Verifie s'il y a collision avec un objet dans une direction précise
//argument0 : Position X à vérifier : normalement X de l'objet mais peut être différent si pour vérifier un futur mouvement par exemple //argument1 : Position Y à vérifier //argument2 : direction à vérifier // 1 = droite // 2 = haut // 3 = gauche // 4 = bas //argument3 : objet à vérifier si collision //argument4 : precice // true = vérification précise de la collision // false = vérification non précise de la collision
var ObjectCollision,X,Y;
X = argument0 Y = argument1
switch (argument2) { case 1://droite { x1 = X - sprite_xoffset + sprite_get_bbox_right(sprite_index) + 1 y1 = Y - sprite_yoffset + sprite_get_bbox_top(sprite_index) x2 = X - sprite_xoffset + sprite_get_bbox_right(sprite_index) + 1 y2 = Y - sprite_yoffset + sprite_get_bbox_bottom(sprite_index) return collision_line(x1,y1,x2,y2,argument3,argument4,true) break } case 2://haut { x1 = X - sprite_xoffset + sprite_get_bbox_left(sprite_index) y1 = Y - sprite_yoffset + sprite_get_bbox_top(sprite_index) - 1 x2 = X - sprite_xoffset + sprite_get_bbox_right(sprite_index) y2 = Y - sprite_yoffset + sprite_get_bbox_top(sprite_index) - 1 return collision_line(x1,y1,x2,y2,argument3,argument4,true) break } case 3://gauche { x1 = X - sprite_xoffset + sprite_get_bbox_left(sprite_index) - 1 y1 = Y - sprite_yoffset + sprite_get_bbox_top(sprite_index) x2 = X - sprite_xoffset + sprite_get_bbox_left(sprite_index) - 1 y2 = Y - sprite_yoffset + sprite_get_bbox_bottom(sprite_index) return collision_line(x1,y1,x2,y2,argument3,argument4,true) break } case 4://bas { x1 = X - sprite_xoffset + sprite_get_bbox_left(sprite_index) y1 = Y - sprite_yoffset + sprite_get_bbox_bottom(sprite_index) + 1 x2 = X - sprite_xoffset + sprite_get_bbox_right(sprite_index) y2 = Y - sprite_yoffset + sprite_get_bbox_bottom(sprite_index) + 1 return collision_line(x1,y1,x2,y2,argument3,argument4,true) break } default : { show_message("Mauvaise utilisation de la fonction CheckCollision!!!") } }
DeplacementVertiPersoGravityInit: Initialisation du moteur de gravité pour l'objet, certaines valeurs peuvent être modifiées par l'utilisateur des scripts... - Code:
-
//Script GravityInit //Par Loucheman, Crédit apprécié si vous utilisez ce script !
//Initialise la gravité //*** À mettre dans le create de l'objet... ***
//*** Constantes de base pouvant être modifiées par l'utilisateur des scripts *** VGravite = .8 //Gravité : plus ce chiffre est grand plus la gravité se fera sentir VHauteur = 96 //Hauteur du saut en pixel (valeur approx...)(jouer avec cette valeur pour obtenir le résultat désiré...) VPeutSauterSiImpossible = false//Le perso va tenter de sauter même s'il y a un objet //au dessus de lui...
//Initialisation du moteur : Ne pas toucher !!! GravityDown() //Gravité vers le bas lors de l'initialisation
- Code:
-
//Script GravityDown //Par Loucheman, Crédit apprécié si vous utilisez ce script !
//Met la gravité vers le bas
gravity=VGravite gravity_direction=270 - Code:
-
//Script GravityNone //Par Loucheman, Crédit apprécié si vous utilisez ce script !
//Supprime la gravité sur l'objet //Exemple : quand le perso est sur le plancher...
gravity=0 - Code:
-
//Script GravityJump //Par Loucheman, Crédit apprécié si vous utilisez ce script !
//Met la gravité vers le bas et fait sauter le perso //(s'il n'y a pas d'objets en haut du perso : au moins //1 bounding box doit être libre au dessus du perso pour //qu'il puisse sauter...)
if VPeutSauterSiImpossible or not CheckCollision(x,y-32,2,Mur,false)then { gravity=VGravite gravity_direction=270 vspeed = -CalculVitesseInitialeJump(VGravite,VHauteur) } - Code:
-
//Script CalculVitesseInitialeJump //Par Loucheman, Crédit apprécié si vous utilisez ce script !
//Calcul de la vitesse initiale de projection d'un corps pour qu'il //aille à une hauteur donnee en tenant compte de la gravité //La formule simplifiée est (calcul toujours selon angle de 90 degré...): // VitesseInitiale = sqrt(2 * VGratité * Hauteur) //+sqrt(VHauteur*11.25) a été ajouté pour que le perso saute un //peu plus haut... return sqrt(argument0 * (argument1+sqrt(VHauteur*11.25)) * 2) DeplacementHorizPersoDeplacementInit: Initialisation du moteur de déplacement pour l'objet, certaines valeurs peuvent être modifiées par l'utilisateur des scripts... - Code:
-
//Script DeplacementInit //Par Loucheman, Crédit apprécié si vous utilisez ce script !
//Initialisation des variables pour les scripts de déplacement //*** À mettre dans le create de l'objet... ***
//*** Constantes de base pouvant être modifiées par l'utilisateur des scripts *** VPlancher = Mur //Objet représentant le sol et/ou les murs (normalement un objet parent du mur et du sol...)() VVitesseDeplacementMax = 5 //Vitesse horizontale maximum du perso VitesseIncrementeSol = .5 //Facteur d'incrémentation de la vitesse horizontale quand le perso est au sol VitesseIncrementeAir = .2 //Facteur d'incrémentation de la vitesse horizontale quand le perso est dans les airs (saut...) VFriction = .2 //Friction : plus ce chiffre est grand, plus le perso s'arrête vite quand aucune touche de direction n'est appuyée
//Initialisation : ne pas toucher... VHspeed = 0 - Code:
-
//Script DeplacementDroite //Par Loucheman, Crédit apprécié si vous utilisez ce script !
//A exécuter pour que le perso se déplace vers la droite //(mettre dans l'événement fleche droite par exemple...) if CheckCollision(x,y,4,VPlancher,false) //Si le perso est sur un mur, le déplacement horizontal se fait beaucoup plus vite : .5 //sinon .2 VHspeed = min(VVitesseDeplacementMax,VHspeed + VitesseIncrementeSol) else VHspeed = min(VVitesseDeplacementMax,VHspeed + VitesseIncrementeAir) CalculHspeed() - Code:
-
//Script DeplacementGauche //Par Loucheman, Crédit apprécié si vous utilisez ce script !
//A exécuter pour que le perso se déplace vers la droite //(mettre dans l'événement fleche gauche par exemple...)
if CheckCollision(x,y,4,VPlancher,false) //Si le perso est sur un mur, le déplacement horizontal se fait //beaucoup plus vite : .5 sinon .2 s'il est dans les airs VHspeed = max(-VVitesseDeplacementMax,VHspeed - VitesseIncrementeSol) else VHspeed = max(-VVitesseDeplacementMax,VHspeed - VitesseIncrementeAir)
CalculHspeed() - Code:
-
//Script DeplacementSaute //Par Loucheman, Crédit apprécié si vous utilisez ce script !
//A exécuter pour que le perso se déplace vers la droite //(mettre dans l'événement spacebar par exemple...)
GravityJump() - Code:
-
//Script CalculHspeed //Par Loucheman, Crédit apprécié si vous utilisez ce script ! //Utilisé par les scripts de déplacement gauche et droite //Ce script a été créé pour que la vitesse de l'objet puisse //être recalculee en dehors des scripts //Par exemple: le perso est sur un mur qui bouge de gauche à droite //Même si l'utilisateur ne fait pas bouger le perso avec les flèches, //le perso doit aller à la même vitesse que le mur qui bouge... //On pourra donc recalculer la vitesse en dehors des scripts de déplacement //en faisant comme ceci par exemple: hspeed = Mur.hspeed+VHspeed http://Mur.hspeed est la vitesse du mur, VHspeed est la vitesse contrôlee //par les flêches... hspeed = VHspeed DeplacementCheckCollision - Code:
-
//Vérification des collisions verticales if vspeed = 0 and not CheckCollision(x,y+vspeed,4,VPlancher,false) then //Si le perso est dans le vide GravityBas et qu'il n'est pas en saut on met la gravité //vers le bas GravityDown() else if vspeed > 0 and CheckCollision(x,y+vspeed,4,VPlancher,false) then //Si le perso est en chute et qu'il va y avoir collision au prochain step avec un Mur //On bouge le perso jusqu'au Mur et on stop le déplacement vertical et on met la gravité à 0 { move_contact_solid(270,vspeed) move_outside_solid(90,2) vspeed=0 GravityNone() } else if vspeed < 0 and CheckCollision(x,y+vspeed,2,VPlancher,false) then //Si le perso est en saut et qu'il va y avoir collision au prochain step avec un Mur //On bouge le perso jusqu'au Mur et on stop le déplacement vertical et on met la //gravité vers le bas { move_contact_solid(90,vspeed) vspeed=0 GravityDown() }
//Vérification des collisions horizontales if hspeed > 0 and CheckCollision(x+hspeed,y,1,VPlancher,false) then //Si le perso est en déplacement vers la droite et qu'il va y avoir collision au prochain //step avec un Mur, On bouge le perso jusqu'au Mur et on stop le déplacement horizontal { move_contact_solid(0,hspeed) hspeed = 0 VHspeed=0 } else if hspeed < 0 and CheckCollision(x+hspeed,y,3,VPlancher,false) then //Si le perso est en déplacement vers la gauche et qu'il va y avoir collision au prochain //step avec un Mur, On bouge le perso jusqu'au Mur et on stop le déplacement horizontal { move_contact_solid(180,hspeed) hspeed=0 VHspeed=0 }
if CheckCollision(x,y+1,4,VPlancher,false) and CheckCollision(x,y-1,4,VPlancher,false) then move_outside_solid(90,32)
VerifTouchesPesees - Code:
-
if keyboard_check_direct(vk_left) then { Dir = 1//Utilisé pour l'affichage du sprite dans Draw DeplacementGauche() } if keyboard_check_direct(vk_right) then { Dir = 0 //Utilisé pour l'affichage du sprite dans Draw DeplacementDroite() } if keyboard_check_direct(vk_up) and CheckCollision(x,y+1,4,VPlancher,false) then //Si la touche flèche haut est pesée et que le perso est sur un mur JUMP! { DeplacementSaute() }
//Application de la friction si le perso est sur un mur... ObjectMur = CheckCollision(x,y,4,Mur,false) if ObjectMur then { hspeed = VHspeed + ObjectMur.hspeed if abs(hspeed - ObjectMur.hspeed) <= VFriction then VHspeed = 0 else if hspeed > ObjectMur.hspeed then VHspeed -= VFriction else VHspeed += VFriction }
|
|
Gab666 Modérateur 'Zut'
Messages : 5340 Localisation : **I move away from the mic to breathe in
| Sujet: Re: Script déplacement : jeu platforme style mario Lun 21 Mai 2007 - 20:42 | |
| Vraiment très bien _________________ PIS MANIAC PREND DES BAINS !
|
|
Topaze22 *Excellent utilisateur*
Messages : 6213 Localisation : Sur la Lune Projet Actuel : Projet HELLO/TOPAZE22 Mario Bros World
| Sujet: Re: Script déplacement : jeu platforme style mario Lun 21 Mai 2007 - 21:25 | |
| _________________ Topique pour le Projet Hello Mario en préparation. Sorti du topique lorsque la première démo sera disponible.
|
|
-X2km- Nouveau
Messages : 6
| Sujet: Re: Script déplacement : jeu platforme style mario Mer 23 Mai 2007 - 16:12 | |
|
Dernière édition par -X2km- le Sam 16 Nov 2013 - 11:25, édité 1 fois |
|
Ragdoll *Excellent utilisateur*
Messages : 5494 Localisation : Angers, maine et loire Projet Actuel : Rien je suis mort a l'intérieur.
| Sujet: Re: Script déplacement : jeu platforme style mario Mer 23 Mai 2007 - 16:34 | |
| tout ce code pour un chti moteur physique oO _________________ Dr Jango |
|
Topaze22 *Excellent utilisateur*
Messages : 6213 Localisation : Sur la Lune Projet Actuel : Projet HELLO/TOPAZE22 Mario Bros World
| Sujet: Re: Script déplacement : jeu platforme style mario Mer 23 Mai 2007 - 22:23 | |
| Pas du tout si petit, crois moi ma propre expérience _________________ Topique pour le Projet Hello Mario en préparation. Sorti du topique lorsque la première démo sera disponible.
|
|
loucheman Très bonne participation
Messages : 115
| Sujet: Re: Script déplacement : jeu platforme style mario Jeu 24 Mai 2007 - 13:44 | |
| - Jango_Fett a écrit:
- tout ce code pour un chti moteur physique oO
Ça paraît gros, mais j'ai beaucoup documenté... Si quelqu'un veut modifier, ce sera plus facile... _________________ Loucheman
|
|
Scooby Doo Utilisateur confirmé: Rang *
Messages : 265 Localisation : Québec !
| Sujet: Re: Script déplacement : jeu platforme style mario Mer 25 Juil 2007 - 22:45 | |
| Voila quelqu'un qui reflechis, tu sais ce qu'est une date ? 24 mai c'est presque hier ? :gniah: La prochaine fois ton commentaire sans but tu peu te le garder. ta maman ne serait pas fier... |
|
Invité Invité
| Sujet: Re: Script déplacement : jeu platforme style mario Mer 25 Juil 2007 - 23:10 | |
| lol? Que je sache c'est pas un sacrilège que de déterrer un topic, et le commentaire n'est pas sans but, puisqu'il veut le féliciter d'avoir mis des explications dans les scripts. |
|
xenamart Utilisateur confirmé: Rang ***
Messages : 554 Localisation : sur la toile, entre google et le cbna Projet Actuel : Rufal
| Sujet: Re: Script déplacement : jeu platforme style mario Jeu 26 Juil 2007 - 18:02 | |
| 1) Depuis quand le détérage d'un sujet et mal pris sur un forum pour en plus complimenter l'auteur du topic ? 2) Trés bon boulot loucheman sa sera surement trés utile 3) Juste une petite idée : Se serai pas mal de faire une lib pour les jeu de plateformes _________________ mon seul projet en cour : |
|
Wargamer *Excellent utilisateur*
Messages : 6938 Projet Actuel : Bataille de cake au fruits
| Sujet: Re: Script déplacement : jeu platforme style mario Ven 27 Juil 2007 - 4:48 | |
| ca serait pas mal de le mettre en spoiler surtout et mettre un avertissement: o.OFaite gaffe au mal de têteo.O _________________ Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend |
|
Super-Mouton *Excellent utilisateur*
Messages : 4916 Localisation : Cyberworld Projet Actuel :
| Sujet: Re: Script déplacement : jeu platforme style mario Ven 27 Juil 2007 - 7:09 | |
| - Scooby Doo a écrit:
- Voila quelqu'un qui reflechis, tu sais ce qu'est une date ? 24 mai c'est presque hier ? :gniah: La prochaine fois ton commentaire sans but tu peu te le garder. ta maman ne serait pas fier...
Ouin ben tu peux aussi garder ton commentaire debord.. ça date seulement de deux mois et son commentaire était pas inutile c'était pour dire bravo à l'auteur, j'aime bien le monde qui chialent pour rien. _________________ Hey là tabarnak lâche ma sig sacha >=| |
|
krocko2233 Utilisateur confirmé: Rang *
Messages : 228 Localisation : In my dreams...
| Sujet: Re: Script déplacement : jeu platforme style mario Ven 27 Juil 2007 - 14:02 | |
| Bon j'ai jamais été fort avec les scripts mais si j'ai ien compris sa sert juste à faire les déplacements ? |
|
Wargamer *Excellent utilisateur*
Messages : 6938 Projet Actuel : Bataille de cake au fruits
| Sujet: Re: Script déplacement : jeu platforme style mario Ven 27 Juil 2007 - 16:16 | |
| j'aime pas les script a loucheman moi ils sont hyper utille mais ils sont hyper long par contre il a été hyper simpa quand il ma donné des script sur le temps (script que je comprend pas ) _________________ Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend |
|
jo *Excellent utilisateur*
Messages : 4879 Localisation : CENSURE T_T Projet Actuel : FAC
| Sujet: Re: Script déplacement : jeu platforme style mario Ven 27 Juil 2007 - 17:28 | |
| mes scripts de deplacement : 10 lignes dans step c'est d'ailleurs pour ca que ,mon perso se plante dans le plafond, mon perso se coince dans les mur, mon perso se coince dans le sol :fete: _________________ http://viciousslugs.sup.fr/ <- Des imbéciles en action. Venez visiter, on recherche des lecteurs, des auteurs, et ça paye mal. En fait ça paye pas, mais ya moyen de se marrer. |
|