RPG Fusion
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.



 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment : -45%
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre ...
Voir le deal
339 €

 

 Glisser sur la glace

Aller en bas 
AuteurMessage
Laugilus
Démocrate Usurpateur
Démocrate Usurpateur
Laugilus


Masculin
Nombre de messages : 577
Age : 32
Projet(s) en cours : Fusion Maker 1.0.0
Niveau Rpg Maker : Trop lent.
Jeux Préférés : FF X - KH - KH 2 - DQ 8 - Oblivion
Date d'inscription : 12/02/2007

Glisser sur la glace Empty
MessageSujet: Glisser sur la glace   Glisser sur la glace EmptySam 05 Jan 2008, 20:29

Glisser sur de la glace


Auteur : Laugilus

Avant-propos :
Je me suis rendu compte que le tutorial qui existe déjà sur beaucoup de forum expose une méthode longue et avec des commandes inutiles.

Cette fois ci, je vous propose de découvrir une autre méthode. La mienne content . Elle ne tient que dans un seul évènement, n'utilise que deux variables et aucun interrupteur. Et enfin, gros avantage, avec cette méthode, vous n'êtes plus obligé de mettre des événements autour des obstacles, que vous étiez obligé de faire avec l'ancienne méthode.

En d'autres termes, voilà les avantages que cela apporte :
- Cela évite les bogues liés à l'oublie d'un événement obstacle.
- Le jeu est plus rapide car il y a nettement moins d'évènement.
- Le développement de votre projet est bien plus rapide :^^:

Le tutorial est assez long, mais je me voyez mal vous balancer les commandes sans expliquer... Si vous ne voulez pas "vous taper" les explications, d'abord envoyez-moi un MP que je vous frappe sur les doigts, ensuite, je vous dis que c'est en comprenant que l'on apprend (si, si [Don hypocrite] ) et enfin, les commandes sont toutes à la fin...

Nouvelle version :
Suis-je sur de la glace, Gildas ?

Tout d'abord, vous devez faire en sorte que le carreau du chipset de la glace soit égale à 1. Allez donc dans votre Base de Données (F9) et suivez l'image.

Glisser sur la glace 0801081015022017814

Ensuite, créez un événement en processus parallèle.
Comme le héros doit glisser sur la glace, la première chose à faire est de vérifier s'il est sur la surface glissante.

Faites donc une condition pour savoir si le héros marche sur la glace :
Citation :
<>Variable(s) [0038: Terrain - glisse] rendre égale à Héros --> N° du type de terrain
<>Condition : si la variable [0038: Terrain - glisse] est égale à 1
<>
: Fin
<>

Ensuite, il va falloir vérifier si le Héros PEUT glisser. C'est-à-dire, si aucun objet ou obstacle n'est devant lui, et qui l'empêche de passer. Si il peut glisser, et bien il glissera laugh sinon, il s'arrêtera de glisser, et le joueur devra choisir une autre direction. (Pour obtenir un résultat tel que dans Pokémon).

Je peux glisser, Aimé ?

Il faut faire une condition pour vérifier si l'on peut glisser. Sachez que l'on va utiliser une ligne de script, qu'il faudra mettre dans une condition.
Concrètement, on demander à RMXP si le carreau qui se trouve devant le héros est praticable.

Il faut que l'on connaisse la direction du héros pour pouvoir utiliser cette ligne de script. Il faut rendre égale une variable à la direction du héros :
Glisser sur la glace 0801090622457111592226

Ensuite il faut que l'on fasse la condition. L'image ci-dessous parle mieux que moi^^.
Glisser sur la glace 0801090626427111592240

Dans la zone de texte, tapez :
Code:
$game_player.passable?($game_player.x, $game_player.y, $game_variables[41])

Vous devriez obtenir ça :
Citation :
<>Variable(s) [0038: Terrain - glisse] rendre égale à Héros --> N° du type de terrain
<>Condition : si la variable [0038: Terrain - glisse] est égale à 1
<>Variable(s) [0041: $direction du héros] rendre égale à Héros --> Direction fixée
<>Condition : si Script : '$game_player.passable?($game_player.x, $game_player.y, $game_variables[41])'
<>
: Sinon
<>
: Fin
<>
: Fin
<>

Vous pouvez traduire la ligne de condition par : Si le héros peut faire un pas en avant.

Attention, les numéros en gras doivent être identiques ! Remplacez donc le numéro du script de la condition par le numéro de votre variable.

Note : Cette condition peut être fait en évènement, mais c'est long... et ça fait intervenir plusieurs variables.

Patinons avec Marion !

Si le héros peut effectuer son pas vers l'avant, autant en profiter... Faites le donc avancer. Mettez "Animé pendant mouvement OFF" pour plus de réalisme après avoir fait "Un pas en avant" au Héros dans la dernière condition.

Si le héros ne peux pas avancer, c'est qu'un obstacle est devant lui. Il faut que le joueur puisse choisir la direction à prendre. Pour ça, il faut stopper l'événement et attendre que le joueur appuie sur une flèche directionnelle.
Il ne faut pas par contre que le Héros bouge quand il appuie sur une flèche, sinon ça bogue... (ne me demandez pas pourquoi ça le fait... un des mystères de Dame Nature...)

Faites donc attendre le Héros pendant une frames, et cochez la case "Répéter".

Mettez alors dans le "Sinon" de la condition une boucle (pour stopper l'événement), et avec comme commande : "Gestion de l'appuie sur une touche" (pour attendre que le joueur appuie sur une touche). Choisissez la variable que vous voulez...

Il faut maintenant vérifier si la touche que le joueur a pressée est bien une flèche directionnelle. Pour ce faire, une fois que le joueur a appuyé sur une touche, la variable que vous avez chosie contient maintenant un nombre (qui dépend de la touche.)
Si ce nombre est égale à 2 (flèche bas), 4 (flèche gauche), 6 (flèche droite), ou 8 (flèche haut), alors le joueur a appuyé sur une flèche.
Il va donc falloir faire 4 conditions (toujours dans la boucle), une pour chaque flèche qui a pu être pressée.
Dans chacune des conditions, voilà ce qu'il faut mettre :
: Regarde vers ... (cela dépend de la flèche choisie)
<> Sortir de la boucle

Voici que l'on obtient (dans le "Sinon" de la condition)
Citation :
<>Déplacer l'évènement : Héros (répéter)
: : Attendre : 1 frames

<>Boucle
<>Stocker le code de la touche appuyée dans la variable [0041: $direction du héros]
<>Condition : si la variable [0041: $direction du héros] est égale à 2
<>Déplacer l'évènement : Héros
: : Regarde en bas

<>Sortir de la boucle
<>
: Fin
<>Condition : si la variable [0041: $direction du héros] est égale à 4

<>Déplacer l'évènement : Héros
: : Regarde à gauche

<>Sortir de la boucle
<>
: Fin
<>Condition : si la variable [0041: $direction du héros] est égale à 6

<>Déplacer l'évènement : Héros
: : Regarde à droite

<>Sortir de la boucle
<>
: Fin
<>Condition : si la variable [0041: $direction du héros] est égale à 8

<>Déplacer l'évènement : Héros
: : Regarde en haut

<>Sortir de la boucle
<>
: Fin
<>
: Fin de boucle
<>

Cette boucle semble un peu complexe, alors je vais l'expliquer en prennant la place de l'ordinateur.
1. L'ordinateur est rentré dans la boucle.
2. L'ordinateur attend que le joueur appuie sur une touche pour continuer.
3. Dès qu'une touche est pressée, il analyse grâce aux conditions, quelle touche a été pressée. Si ce n'est pas une flèche, il retourne au 2., sinon, il fait regarder le Héros dans la direction de la flèche et sort de la boucle.

Et qu'est-ce qu'on obtient à la fin, Saturnin ?

Citation :
<>Variable(s) [0038: Terrain - glisse] rendre égale à Héros --> N° du type de terrain
<>Condition : si la variable [0038: Terrain - glisse] est égale à 1
<>Variable(s) [0041: $direction du héros] rendre égale à Héros --> Direction fixée
<>Condition : si Script : '$game_player.passable?($game_player.x, $game_player.y, $game_variables[41])'
<>Déplacer l'évènement : Héros (ignorer commandes si impossible)
: : Animé pendant mouvement OFF
: : Un pas en avant
: : Animé pendant mouvement ON

<>
: Sinon
<>Déplacer l'évènement : Héros (répéter)
: : Attendre : 1 frames

<>Boucle
<>Stocker le code de la touche appuyée dans la variable [0041: $direction du héros]
<>Condition : si la variable [0041: $direction du héros] est égale à 2
<>Déplacer l'évènement : Héros
: : Regarde en bas

<>Sortir de la boucle
<>
: Fin
<>Condition : si la variable [0041: $direction du héros] est égale à 4

<>Déplacer l'évènement : Héros
: : Regarde à gauche

<>Sortir de la boucle
<>
: Fin
<>Condition : si la variable [0041: $direction du héros] est égale à 6

<>Déplacer l'évènement : Héros
: : Regarde à droite

<>Sortir de la boucle
<>
: Fin
<>Condition : si la variable [0041: $direction du héros] est égale à 8

<>Déplacer l'évènement : Héros
: : Regarde en haut

<>Sortir de la boucle
<>
: Fin
<>
: Fin de boucle

<> Commentaire : Juste pour le réalisme...
<>Déplacer l'évènement : Héros (ignorer commandes si impossible)
: : Animé pendant mouvement ON
: : Un pas en avant

<>
: Fin
<>
: Fin
<>

Et voilà, l'événement est terminé ! Votre Héros peut maintenant glisser sur la glace. S'il retourne sur la terre ferme, il ne glissera plus, s'il rencontre un obstacle, il pourra changer de direction, et ce, sans faire un évènement au point de contact.


Dernière édition par le Ven 11 Jan 2008, 13:39, édité 4 fois
Revenir en haut Aller en bas
 
Glisser sur la glace
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Tour de Glace

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Fusion :: LUDOTHEQUE :: Temple du Savoir :: Systèmes-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser