[]Ruby,
Tuto n°2
[]Les Planes (Plans)
Auteur : Moi
Attention ! Il est nécessaire d'avoir un minimum de connaissance en Ruby pour comprendre ce tuto !
C'est pourquoi je conseillerais au débutant complet de commencer par => là <= 1 - Qu'est-ce qu'un Plan ?En
Ruby, un
Plan s'apparent fortement à un
Sprite mais avec une particularité : il se répète
(
voir plus bas pour de plus amples explications). Un Plan sert également à utiliser un
Bitmap.
2 - Appel de la Classe :- Code: Tout sélectionner
Plane.new
Plane.new(viewport)
Comme le
Sprite, on peut aussi spécifier un argument de type
Viewport.
Faîtes attention à ne pas oublier le
e de
Plane.
3 - Méthodes et Propriétés :Pour ceux qui ont lu mon premier tuto, vous pourrez voir que le
Plan a pas mal de méthodes communes au
Sprite.
Néanmoins, il y en a certaines qui le distingue (
sinon pourquoi faire 2 classes différentes ?).
Je commencerais avec @plan = Plane.new pour les exemples.- Code: Tout sélectionner
@plan.viewport
Réfère au
Viewport utilisé pour l'affichage du
Plan (
s'il y en a 1)
- Code: Tout sélectionner
@plan.dispose
Efface le
Plan.
Comme pour le
Sprite, éviter de l'oublier !
- Code: Tout sélectionner
@plan.disposed?
Renvoie
TRUE si le
Plane a été effacé, sinon renvoie
FALSE.
- Code: Tout sélectionner
@plan.bitmap
Réfère au
Bitmap en rapport avec le
Plan.
- Code: Tout sélectionner
@plan.visible
Détermine si le
Plan est visible (
TRUE) ou pas (
FALSE).
- Code: Tout sélectionner
@plan.ox
@plan.oy
@plan.z
Les coordonnées du
Plan.
ox : origine de l'abscisse
oy : origine de l'ordonnée
z :
hauteur (
l'objet avec la valeur la plus élevée est positionné au-dessus)
Attention ici, différence par rapport au
Sprite, les coordonnées ne peuvent être définies que par rapport à leur origine sur une axe et non par rapport à un point précis.
En effet c'est logique puisqu'un
Plan n'a pas de limite. Donc n'oubliez pas le
o devant x et y (
le z ne change pas).
Petite précision : le
Sprite possède aussi les propriétés ox et oy, mais elles ne sont pas très utiles puisqu'elles font juste l'inverse (
@sprite.ox += 1 revient à @sprite.x -= 1)
- Code: Tout sélectionner
@plan.opacity
Détermine l'opacité du
Plan (
entre 0 et 255 inclus)
- Code: Tout sélectionner
@plan.tone
Détermine les tons de couleur du
Plan grâce à la classe
Tone (
fonctionne à peu près pareil que Color)
J'ai mis toutes les méthodes du
Plan sauf 2 qui ne sont pas très utiles (
à par pour les pros de chez pros, donc pas pour moi 
)
Ps : pour ceux qui ont remarqué qu'il n'y avait pas de méthode update, c'est parfaitement normal; rappellez-vous que dans le cas du
Sprite ce n'est nécessaire que si on utilise le flash, or un
Plan n'a pas de méthode flash ...
4 - Petit script d'exemple :C'est là que ça devient interressant car je parie qu'en lisant vous vous êtes dits :
Lecteur a écrit:
Bof ...
Au fond un Plan c'est quasiment un Sprite ...
Ya juste quelques méthodes en moins ...
Alors ceux qui se disent ça, copiez/collez ce code dans RMXP directement sans le lire.
Essayez d'appuyer sur les touches
Haut Bas Gauche Droite et Entrée.
PS : n'oubliez pas de mettre une image (
n'importe laquelle) nommée
Test dans votre dossier
Pictures (
modifiable en ligne 15 et 16).
Mettez plutôt une image de fond, pas forcement grande, l'effet sera meilleur.
Appelez le sript avec :
- Code: Tout sélectionner
$scene = Scene_Plan.new
- Code: Tout sélectionner
# Définition de la Classe
class Scene_Plan
# Méthode Principale
def main
# On appelle 2 Plans (pour plus d'effet ^^)
@plan = Plane.new
@plan_2 = Plane.new
# On attribue une image aux Bitmaps des Plans
#-------------------------------------------
# Note : RPG::Cacche.picture("nom de l'image")
# correspond à un fichier image dans le dossier
# Pictures du jeu
@plan.bitmap = RPG::Cache.picture("Test")
@plan_2.bitmap = RPG::Cache.picture("Test")
# On change les couleurs des 2 Plans pour les différencier
@plan.tone = Tone.new(0, 100, 0)
@plan_2.tone = Tone.new(0, 0, 100)
# On définit quelques variables qui serviront plus tard
@mode = 0
@x = 0
@y = 0
#-------------------------------------------
# Ce morceau de code est présent dans toutes
# les Scenes
#-------------------------------------------
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
#---------------------
# On efface les bitmap des 2 Plans ...
@plan.bitmap.dispose
@plan_2.bitmap.dispose
# ... puis les 2 Plans
@plan.dispose
@plan_2.dispose
# Fin de la méthode main
end
# Méthode de mise à jour
def update
# C'est dans la méthode update qu'on va pouvoir
# faire défiler le Plan.
# Ces deux lignes le font suivant 2 variables
# pour le plan n°1
@plan.ox += @x
@plan.oy += @y
# Et celles-là pour le plan n°2
@plan_2.ox -= @x
@plan_2.oy -= @y
# Si le bouton B (= 0 ou X) est pressé
if Input.repeat?(Input::B)
# On retourne à la Map
$scene = Scene_Map.new
end
# Si le bouton C (= Entrée) est pressé
if Input.repeat?(Input::C)
# Si la varialbe @mode est égale à 1 ...
if @mode == 1
# .. on la remet à 0
@mode = 0
# Sinon ...
else
# ... on y ajoute 1
@mode += 1
end
end
# Dessous, les touches modifient des paramètres des Plans suivant
# la valeur de la variable @mode.
# Quand @mode est égal à 0, elles font défiler les Plans et
# modifient la vitesse de défilement
# Quand @mode est égal à 1, elles modifient l'opacitée
# du Plan qui se trouve dessus.
# Si vous n'avez pas tout compris, posez vos questions sur
# le topic du forum, je détaillerais un peu plus.
# Si le bouton Bas est pressé
if Input.repeat?(Input::DOWN)
case @mode
when 0
@y -= 1
when 1
@plan_2.opacity -= 10
end
end
# Si le bouton Haut est pressé
if Input.repeat?(Input::UP)
case @mode
when 0
@y += 1
when 1
@plan_2.opacity += 10
end
end
# Si le bouton Droite est pressé
if Input.repeat?(Input::RIGHT)
case @mode
when 0
@x -= 1
when 1
@plan_2.opacity -= 10
end
end
# Si le bouton Gauche est pressé
if Input.repeat?(Input::LEFT)
case @mode
when 0
@x += 1
when 1
@plan_2.opacity += 10
end
end
# Fin de la méthode update
end
# Fin de la Classe
end
Alors ?
Je parie que vous avez changé d'avis sur les Plans...
Vous pouvez les utiliser de beaucoup de manière différentes ...
Laissez faire votre imagination !
PS : Bientôt un tuto sur les Viewport où vous pourrez apprendre à localiser un Plan et à le flasher.EDIT : Images :Voilà l'image que j'avais à la base :
Et voilà ce que ça donne avec le script d'au-dessus :
Bon, c'est pas super impressionnant, et puis on ne voit pas l'animation des 2
Plans.
Le mieux c'est encore de tester vous-même ...