Bien le bonjours !
Vous cherchez absolument le moyen de faire une Introduction avant l'apparition du Menu de votre jeu ? Eh bien ne cherchez plus, ceci est pour vous !
Je vous propose un script permettant de faire défiler des images, avec une bande son et optionnellement un texte, le tout AVANT l'apparition du Menu.
Auteur : Danny Coulombe
1. Créez un nouveau script, au-dessus de Main, et nommez-le
Scene_Intro.
Copiez/collez ce code dedans :
- Code: Tout sélectionner
#=================================
#Scene_Intro
#------------------------------------------------------------------
#Les images doivent etres mise dans le dossier "Pictures"
#=================================
class Scene_Intro
#-----------------------------------------------------------------
def main
$data_system = load_data("Data/System.rxdata")
$game_system = Game_System.new
@start_time = Time.now
#---------------------------------
pictures=["Image1", "Image2", "Image3", "Image4", "Image5", "Image6", "Image7"]
@pic_start_array=[4.4,4.5,4.6,4.7,4.8,4.9,5] # Vitesse d'apparition
@pic_end_array=[4.5,4.6,4.7,4.8,4.9,5,5.1] # Vitesse de disparition
#---------------------------------
x_list=[0,0,0,0,0,0,0] # Axe X des images
#------------------------------------
y_list=[0,0,0,0,0,0,0] # Axe Y des images
@fade_in_speed=[250,250,250,250,250,250,250] # Vitesse de fondu (!! 0 = l'image n'apparait pas ; 250 = pas de fondu)
@pic_array=Array.new
for i in 0...pictures.size
sprite=Sprite.new
sprite.bitmap=RPG::Cache.picture("" + pictures[i])
sprite.opacity=0
sprite.x=x_list[i]
sprite.y=y_list[i]
sprite.z=9997
@pic_array[i]=sprite
end
strings=["Engagez-vous dans l'aventure !"] # Message
@win=Window_Base.new(0,480,640,64 * strings.size )
@win.contents=Bitmap.new(@win.width-32,@win.height-32)
@win.contents.font.name="Arial" # Police du message
@win.contents.font.size=28 # Taille de la police
@win.opacity=0 # Opacité de la fenêtre de message
@win.z=9998
@win.contents.font.color=Color.new(234,236,147,200) # Couleur du message (code RVB : 1er nbre = Rouge ; 2nd nbre = Vert ; 3eme nbre = Bleu ; 4eme nbre = Saturation)
for i in 0...strings.size
cw=@win.contents.text_size(strings[i]).width
@win.contents.draw_text(@win.contents.width/2 - cw/2,64*i,cw,32,strings[i])
end
@skip_enabled = false
for i in 0..3
if FileTest.exist?("Save#{i+1}.sav")
@skip_enabled = true
end
end
if $DEBUG
@skip_enabled=true
end
#----------------------------
Audio.bgm_play("Audio/BGM/001-Battle01", 150, 100) # Son de l'introduction ; Volume ; Tempo
Graphics.transition
@go_to_title=false
@every_other=0
loop do
if @go_to_title
break
end
Graphics.update
Input.update
$game_system.update
update
end
Graphics.freeze
for i in 0...@pic_array.size
@pic_array[i].dispose
end
@win.dispose
$scene=Scene_Title.new
end
#-----------------------------------------------------------------
def update
if Input.trigger?(Input::C) and @skip_enabled
$game_system.se_play($data_system.cancel_se)
@go_to_title= true
end
if Time.now >= @start_time + 85
@go_to_title = true
end
if Time.now <= @start_time + 38 or Time.now >= @start_time +77
phase_1
end
if Time.now >= @start_time + 33
phase_2
end
end
#-----------------------------------------------------------------
def phase_1
for i in 0...@pic_array.size
time = Time.now - @start_time
if time >= @pic_start_array[i] and time <= @pic_end_array[i]
@pic_array[i].opacity +=@fade_in_speed[i]
else
@pic_array[i].opacity -= @fade_in_speed[i]
end
end
end
#-----------------------------------------------------------------
def phase_2
@every_other+=1
if @every_other % 2 ==1
@win.y -= 1
end
end
end # Scene_Intro
#---------------------------------
# | Utilisation |
#---------------------------------
# Ligne 15:Ici les noms des images
# Ligne 16:Ici la vitesse par laquelle les images apparaitrons [Par ordre]
# Ligne 17:Ici la vitesse par laquelle les images disparaitrons [Par ordre]
# Ligne 19:Ici les axes x ou les images apparaitrons [Par ordre]
# Ligne 21:Ici les axes y ou les images apparaitrons [Par ordre]
# Ligne 23:Ici la vitesse du fondu[Par ordre]
# Ligne 34:Ici un message (n'écrivez rien si vous ne souhaitez pas en mettre)
# Ligne 37:Ici la police du message
# Ligne 38:Ici la taille de la police du message
# Ligne 39:Ici l'opacité de la fenetre du message
# Ligne 41:Ici la couleur du message
# Ligne 56:Ici la musique de l'intro
#
#NOTE:Les images doivent être mise dans le dossier "Pictures"
2. Rendez-vous dans le script Main, et remplacez à la ligne 15 :
- Code: Tout sélectionner
$scene = Scene_Title.new
par :
- Code: Tout sélectionner
$scene = Scene_Intro.new
3. Comment ça marche ?J'ai pris la liberté de corriger le script et de rajouter les instructions à la fin et dans le script, mais je vous les rajoute ici :
Pour faire fonctionner votre Introduction, il vous faudra modifier le script à certaines lignes :
Ligne 15 : Ici les noms des images. À ma connaissance, vous pouvez ajouter autant d'image que vous le voulez. Vous pouvez également ne mettre qu'une seule image.
Ligne 16 : Ici la vitesse d'apparition des images. Cela correspond plus au "moment" d'apparition, dans l'ordre des images (1er nombre = 1ère image, 2ème nombre = 2ème image, etc...). Plus le nombre est grand, plus l'apparition sera tardive.
Ligne 17 : Ici la vitesse de disparition des images. Cela correspond plus au "moment" de disparition, dans l'ordre des images. Plus le nombre est grand, plus la disparition sera tardive.
Ligne 19 : Ici les axes X ou les images apparaitrons, dans l'ordre des images
Ligne 21 : Ici les axes Y ou les images apparaitrons, dans l'ordre des images
Ligne 23 : Ici la vitesse de fondu, qui correspond plus aux vraies vitesses d'apparition et de disparition. Plus le nombre est grand, plus le fondu sera rapide.
Attention : à 250, le fondu n'est pas visible, mais à 0, l'image n'apparait pas !
Ligne 34 : Ici un message (n'écrivez rien si vous ne souhaitez pas en mettre)
Ligne 37 : Ici la police du message
Ligne 38 : Ici la taille de la police du message
Ligne 39 : Ici l'opacité de la fenêtre du message
Ligne 41 : Ici la couleur du message (nuances de Rouge, Vert, Bleu, Saturation)
Ligne 56 : Ici la musique de l'Introduction (dans BGM)
Les images doivent être placées dans le dossier "Pictures" !J'ai un problème avec les vitesses des images !En effet, le script est un peu "balourd" dans les lignes 16 et 17. Si vous prenez une vitesse
inférieur à 3.5, l'image n'apparaitra pas. De même, si une image à
une vitesse d'apparition supérieure à la vitesse de disparition, elle n'apparaitra pas également.
Je souhaite faire une Introduction façon "petit film"Pour cela, commencez par mettre toutes vos images en fondu 250 (ligne 23).
Ensuite, changez la vitesse d'apparition de votre première image en 3.5 (
! attention à ne pas confondre le point . et la virgule , si vous mettez des virgules, le script considérera que vous passez à la programmation de la vitesse de l'image SUIVANTE !) et sa vitesse de disparition en 3.6. Votre second image devra avoir une vitesse d'apparition de 3.6 et une vitesse d'apparition de 3.7. L'image suivante apparaitra en 3.7 et disparaitra en 3.8, etc...
Je ne peux pas exactement dire à quelle mesure de temps ses "vitesses" correspondent. Elle est trop longue pour être en frame, mais trop rapide pour être en seconde. Mais n'ayez pas d'inquiétude : en l'utilisant, vous saurez tout de suite doser la vitesse de chacune de vos images selon votre projet d'introduction.
Remarque : pour arrêter l'introduction, cliquer sur Entrée.