Zénith RPG version 1.1

Soaglor, terre de conflits
miniature
de harusame17.

Avalon, la marche des titans
miniature
de Jacksonmaniac-Sacraï.

SPZelda: Déclarations
miniature
de Dark8744.

Tutoriaux événements

Parallaxe


  • Script de Pipo.
  • Aucune démo n'est disponible pour ce script.

Bonjour,
Voici un petit script que j'ai créé permettant de créer plusieurs "plans" respectant la règle de la parallaxe, afin d'obtenir un effet de profondeur 3d.
Il s'agit en fait de la technique du "scrolling différentiel", utilisé notamment dans Valkyrie Profile.

Ainsi, si par exemple le héros se trouve dans une forêt, vous pourrez placer un "toit" de branches au-dessus de sa tête, obéissant à la règle de la parallaxe (se déplaçant donc plus vite que le sol, puisque plus proche des yeux du joueur).
Il est également possible de créer, par exemple, des objets/rochers flottant au-dessus du sol, ou même entre le sol et la panorama, tout en respectant la loi de la parallaxe pour un meilleur effet de profondeur!

Remarque: pour un jeu de plate-forme, il est préférable de régler la valeur y à 0, pour que le plan ne décolle pas du sol, comme dans Valkyrie Profile.

Toutes les instructions sont dans le script. Quleques explications tout de même:

"x" et "y" correspondent aux vitesses de déplacement relatives au sol. Si le plan est au-dessus du sol, une valeur positive est nécessaire, sinon négative.
A 0, le plan est collé au sol. Un panorama correspond à une valeur de -4, alors qu'un fog est normalement à 0(collé au tileset).

Modifier la valeur z permet de choisir si le plan est au-dessus du brouillard ou non, au-dessus du sol ou non, en dessous du panorama ou non. Le panorama étant à -1000, le sol à -100(pour simplifier) et le fog à 3000.

Les plans ne disparaissent pas au changement de map, vous n'avez pas besoin de relancer la commande à chaque fois.

Pour tester au-dessus du sol, vous pouvez utiliser ce panorama:
http://img126.imageshack.us/img126/7242/15539676oz7.png

Le script:
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
#Scrolling différentiel
#Par Pipo
#
#Ce script permet de créer plusieurs plans, fonctionnant comme des panorama, en leur
#assignant une priorité de superposition et une vitesse de scrolling, afin de créer une
#impression de profondeur 3D.
#
#Tout d'abord, commencez par placez ces quelques lignes à la ligne 43 de Spriteset_Map:
# @plane1 = Plane.new(@viewport1)
# @plane2 = Plane.new(@viewport1)
#Et voilà, le script est prêt à être utilisé!
#
#Manuel d'utilisation:
#Ce script permet, en plus du panorama, de créer deux plans supplémentaires.
#Ces deux plans sont nommés "plane1" et "plane2".
#Toutes vos images de plans doivent être placées dans le dossier panorama.
#
#Pour assigner une nouvelle image à un plan, utilisez la commande d'évènement
#"insérer un script", avec comme commande:
#
#plane1_set("nom", x, y, z)
# -"nom" correspond au nom du panorama, entre guillemets.
#
# -x correspond à la vitesse de scrolling horizontal. A 0 (valeur par défaut), le plan se déplace
#comme s'il était posé sur le sol. A une valeur positive, il se déplace comme s'il était
#au-dessus du sol(ou devant le héros pour un jeu de plate-forme).
#Une valeur négative correspond à un plan sous le sol (ou derrière le héros).
#Ne peut pas aller au-dessus de 3.5.
#
# -y correspond à la vitesse de scrolling horizontal. 0 par défaut.
#
#-z correspond à la position z(profondeur) du plan. 2000 par défaut. Au-dessus de 3000,
#le plan se situe par-dessus le brouillard. En dessous de -1000, il est derrière le panorama.
#
#
#Si vous précisez moins de quatre valeur, les dernières prendront les valeurs par défaut.
#
#Pour supprimer le plan, écrivez simplement "plane1_set"
#
#Bien entendu, toutes ces commandes fonctionnent avec "plane2_set", pour le deuxième plan.
#
#Exemple: plane2_set("01-Sky01", 1, 1). La valeur z=2000 est sous-entendue.
#
#Bon Making!
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

class Game_Map
attr_accessor :plane1_name
attr_accessor :plane1_x
attr_accessor :plane1_y
attr_accessor :plane1_z
attr_accessor :plane2_name
attr_accessor :plane2_x
attr_accessor :plane2_y
attr_accessor :plane2_z

alias initialize_parallax initialize
def initialize
@plane1_x = 0
@plane1_y = 0
@plane1_z = 2000
@plane2_x = -4
@plane2_y = -4
@plane2_z = 2000
initialize_parallax
end

end

class Spriteset_Map

alias update_parallax update
def update

if @plane1_name != $game_map.plane1_name
@plane1_name = $game_map.plane1_name
if @plane1.bitmap != nil
@plane1.bitmap = nil
end
if @plane1_name != ""
@plane1.bitmap = RPG::Cache.panorama(@plane1_name, 0)
end
Graphics.frame_reset
end

if @plane2_name != $game_map.plane2_name
@plane2_name = $game_map.plane2_name
if @plane2.bitmap != nil
@plane2.bitmap = nil
end
if @plane2_name != ""
@plane2.bitmap = RPG::Cache.panorama(@plane2_name, 0)
end
Graphics.frame_reset
end

@plane1.z = $game_map.plane1_z
@plane2.z = $game_map.plane2_z

if $game_map.plane1_x >= 3.5
$game_map.plane1_x = 3.5
end
if $game_map.plane1_y >= 3.5
$game_map.plane1_y = 3.5
end
if $game_map.plane2_x > 3.5
$game_map.plane2_x = 3.5
end
if $game_map.plane2_y > 3.5
$game_map.plane2_y = 3.5
end

@plane1.ox = $game_map.display_x / (4 - $game_map.plane1_x)
@plane1.oy = $game_map.display_y / (4 - $game_map.plane1_y)
@plane2.ox = $game_map.display_x / (4 - $game_map.plane2_x)
@plane2.oy = $game_map.display_y / (4 - $game_map.plane2_y)

update_parallax
end
end#fin de class

def plane1_set(name = "", x = 0, y = 0, z = 2000)
$game_map.plane1_name = name
$game_map.plane1_x = x
$game_map.plane1_y = y
$game_map.plane1_z = z
end
def plane2_set(name = "", x = 0, y = 0, z = 2000)
$game_map.plane2_name = name
$game_map.plane2_x = x
$game_map.plane2_y = y
$game_map.plane2_z = z
end

Concours d'ambiance

Début du concours :
20 Septembre 2007
Fin du concours :
N/A

BattleZone Games Creations
Final Destiny
Island Maker
Légende
Manga Power
Oniromancie
Relite
RPG Making
RPG Sky
RPGMaker FR
RPGSky
RTP Power
Saleth Empire
Terra RPGXP
Terre RPG
World of DBZ