Aller à la page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
Reprise du message précédent:
FdRstar -
posté le 06/03/2013 à 21:02:52 (10 messages postés)
| | Merci, ça marche bien.^^
| Suite du sujet:
Noein -
posté le 16/03/2013 à 16:16:04 (155 messages postés)
| | Support : RPG Maker XP
Question : Affichage partielle d'une image + scrolling horizontal et vertical. [Résolu dans le post ci dessous par Estheone]
Bonjour,
J'ai déjà posé cette question sur le topic des Questions idiotes sur RM mais j'aimerai des éléments supplémentaires concernant un script et son utilisation.
Post de l'autre topic :
Citation:
Je m'explique. Je souhaiterai créer une minimap en temps réelle sur laquelle on verrai l'environnement dans lequel on évolue ainsi que notre joueur et les ennemis... Jusqu'à la il n'y pas de soucis j'ai réussi à obtenir ce que je voulais à l'aide des tutoriels.
Voici ce que ça donne:
Map test de 20 tiles x 15 tiles (soit 640px x 480px)
J'ai calculé les dimensions de la minimap par rapport à une map de taille minimum (soit 640px x 480px) en ayant un ratio de 6, c'est à dire une minimap de 120 px x 90px (6 fois plus petite que ma map). Jusque là toujours aucun problème.
Mon soucis est que si je crée une map plus grande (par exemple 25 tiles x 20tiles équivalent à 800px x 640px), si je veux conserver le même niveau de détail sur la minimap je vais devoir garder mon ratio de 6 ce qui à pour conséquence d'avoir une minimap de taille plus importante (150px x 120px). Hors moi je souhaiterais conserver une minimap de même dimensions.
Ma question est donc la suivante, est il possible d'afficher partiellement une image de dimension plus grande pour en garder que les 120px de large et 90px de haut et d'afficher le reste de l'image par un scrolling horizontal et verticalement en fonction des coordonnées du héros sur la map ? En d'autres termes faire défiler ma minimap en même temps que l'écran.
|
J'ai retrouvé un script qu'un membre m'avait donné pour une question similaire il y a pas mal de temps mais n'ayant pas à l'époque continué de m'intéresser à RM je suis toujours au même point.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
| class Spriteset_Map
def initialize
# Permet d'afficher des images dans un cadre choisis de sorte qu'elles ne
# dépassent pas
# Configurer ici le cadre
rect = Rect.new(488, 32, 120, 90) #(x, y,largeur, hauteur)
# Toutes les images d'ID supérieur ou égale seront dans le cadre
id_image = 1
# Make viewports
@viewport1 = Viewport.new(0, 0, 640, 480)
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport4 = Viewport.new(rect)
@viewport2.z = 200
@viewport4.z = 200
@viewport3.z = 5000
# Make tilemap
@tilemap = Tilemap.new(@viewport1)
@tilemap.tileset = RPG::Cache.tileset($game_map.tileset_name)
for i in 0..6
autotile_name = $game_map.autotile_names[i]
@tilemap.autotiles[i] = RPG::Cache.autotile(autotile_name)
end
@tilemap.map_data = $game_map.data
@tilemap.priorities = $game_map.priorities
# Make panorama plane
@panorama = Plane.new(@viewport1)
@panorama.z = -1000
# Make fog plane
@fog = Plane.new(@viewport1)
@fog.z = 3000
# Make character sprites
@character_sprites = []
for i in $game_map.events.keys.sort
sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
@character_sprites.push(sprite)
end
@character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
# Make weather
@weather = RPG::Weather.new(@viewport1)
# Make picture sprites
@picture_sprites = []
for i in 1..id_image
@picture_sprites.push(Sprite_Picture.new(@viewport2,
$game_screen.pictures[i]))
end
for i in id_image..50
@picture_sprites[i] = Sprite_Picture.new(@viewport4, $game_screen.pictures[i])
end
# Make timer sprite
@timer_sprite = Sprite_Timer.new
# Frame update
update
end
end |
Voici ce que j'ai fait en event pour afficher ma minimap :
Spoiler (cliquez pour afficher)
Spoiler (cliquez pour afficher)
J'ai un soucis c'est que via le script mes images n° 2 et 3 ne s'affichent pas. J'ai également fait un test en affichant la minimap en haut à gauche (x=0 ; y=0) pour voir l'influence du script sur l'affichage des images, résultat l'image s'affiche 2 fois, en haut à gauche et également dans le cadre défini par le script. J'aurai également voulu savoir si via le script il est possible de faire un scrolling de mon image dans le cadre défini en fonction des coordonnées du héros pour avoir un affichage en temps réel de ce que le joueur voit sur son écran (en fait sur le même principe que le script Minimap).
En espérant avoir été assez clair dans l’énoncé de ma question, je vous remercie par avance des éventuels éléments de réponse que vous voudriez bien m'apporter.
|
Estheone -
posté le 16/03/2013 à 17:29:51 (312 messages postés)
| | Citation: Question 1 : Affichage partielle d'une image + scrolling horizontal et vertical. |
Petite remarque avant tout : 120x90 n'a pas un ratio 1:6 par rapport à 640*480 mais 1:5.333.
On va laisser tomber la mini map en event, c'est de la daube.
Je t'en ai fait une scriptée et facilement paramétrable.
Voila un aperçu :
C'est fait à l'arrache mais tout fonctionne sans problème (défilement de la map qui est en ratio 1:5.333, rafraîchissement dynamique des curseurs en fonction de la position du héros et des events).
Le code :
Tu rajoutes ça dans le Scene_Map :
1
2
3
| def create_mini_map(mini_map_name, event_ids)
@mini_map_spriteset = Spriteset_Mini_Map.new(mini_map_name, event_ids)
end |
Tu ajoutes cette ligne en-dessous de @spriteset.update dans la fonction update du Scene_Map :
1
| @mini_map_spriteset.update if @mini_map_spriteset |
Tu ajoutes ça dans le if $game_map.map_id != $game_temp.player_new_map_id dans la fonction transfer_player du Scene_Map :
1
2
3
4
| if @mini_map_spriteset
@mini_map_spriteset.dispose
@mini_map_spriteset = nil
end |
Tu ajoutes ce code au-dessus du main :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| class Spriteset_Mini_Map
def initialize(map_name, event_ids)
@map_name = map_name
@viewport = Viewport.new(520, 0, 120, 90)
@viewport.z = 190
@mini_map_sprite = Sprite.new(@viewport)
@mini_map_sprite.bitmap = RPG::Cache.picture(@map_name)
@player_dot = Sprite.new(@viewport)
@player_dot.bitmap = RPG::Cache.picture("Player_Dot")
@player_dot.ox = @player_dot.bitmap.width/2
@player_dot.oy = @player_dot.bitmap.height/2
@events = []
@event_dots = []
for e in event_ids
event = $game_map.events[e]
if event
@events.push(event)
@event_dots.push(Sprite.new(@viewport))
@event_dots.last.bitmap = RPG::Cache.picture("Event_Dot")
@event_dots.last.ox = @event_dots.last.bitmap.width/2
@event_dots.last.oy = @event_dots.last.bitmap.height/2
end
end
update
end
def dispose
@mini_map_sprite.dispose
@player_dot.dispose
for e in @event_dots
e.dispose
end
@viewport.dispose
end
def update
@mini_map_sprite.ox = $game_map.display_x*3/64
@mini_map_sprite.oy = $game_map.display_y*3/64
@player_dot.x = ($game_player.real_x+64-$game_map.display_x)*3/64
@player_dot.y = ($game_player.real_y+64-$game_map.display_y)*3/64
for i in 0...@events.size
@event_dots[i].x = (@events[i].real_x+64-$game_map.display_x)*3/64
@event_dots[i].y = (@events[i].real_y+64-$game_map.display_y)*3/64
end
end
end
|
Bien sûr il te faut modifier "Player_Dot" et "Event_Dot" par les noms des images de tes curseurs.
Pour initialiser la mini-map c'est simple :
Le premier paramètre c'est le nom de l'image de ta mini-map (dans Pictures), le deuxième est un tableau qui contient les id de tous les events que tu veux afficher sur la mini-map.
Si tu veux déplacer un peu la mini-map (genre qu'elle soit pas complètement collée en haut à droite) c'est les 2 premiers paramètres du viewport qu'il te faut modifier.
Je pense que c'est à peu près tout. Essaie donc. ^^
|
Wandering Souls : Jeu complet / Topic sur Oniro |
Noein -
posté le 16/03/2013 à 18:32:33 (155 messages postés)
| | Merci Estheone pour ta réponse et surtout d'avoir prit le temps de créer un script, c'est vraiment super sympa de ta part . C'est exactement ce dont j'avais besoin.
Citation: Petite remarque avant tout : 120x90 n'a pas un ratio 1:6 par rapport à 640*480 mais 1:5.333. |
Le ratio est une valeur arbitraire puisque c'est le rapport entre les dimensions de la minimap en pixel et celles de la map en tiles. J'ai oublié de le préciser dans mon post, autant pour moi . Mais tu as raison la minimap n'est pas réellement au 1/6ème de ma map.
J'ai testé mais j'ai un message d'erreur. J'ai du faire une étourderie quelque part.
La portion de code ci dessous, tu l'insères au debut du Scene_Map ?
1
2
3
| def create_mini_map(mini_map_name, event_ids)
@mini_map_spriteset = Spriteset_Mini_Map.new(mini_map_name, event_ids)
end |
|
Mack -
posté le 16/03/2013 à 18:35:59 (2310 messages postés)
- - | | Ouais, essaie de mettre un attendre avant.
En faite, là il va te chercher le code dans Scene_Title au lieux de Scene_Map.
( Parce que pour le jeu à ce moment t'es toujours dans l'écran titre. )
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
Estheone -
posté le 16/03/2013 à 18:43:11 (312 messages postés)
| | la fonction create_mini_map tu peux la mettre n'importe où dans le Scene_Map ça ne changera rien.
Le $scene.create_mini_map il faut l'appeler à partir d'un event, et pas à partir de l'écran-titre.
|
Wandering Souls : Jeu complet / Topic sur Oniro |
Noein -
posté le 16/03/2013 à 19:07:16 (155 messages postés)
| | Merci à vous deux pour ce complément d'information.
J'ai bien appelé le $scene_create_mini_map dans un event mais avec un déclenchement en processus parallèle. Avec une attente de 1 frame ça fonctionne ou alors en déclenchement automatique . Maintenant ça fonctionne très bien.
Encore merci Estheone pour ce coup de pouce, c'est vraiment ce que je cherchais .
J'édite mon premier post pour mettre que c'est résolu.
|
Estheone -
posté le 16/03/2013 à 19:40:19 (312 messages postés)
| | Ouais j'avais oublié que les proc parallèles étaient déclenchés avant la création du Scene_Map, d'où l'erreur de script.
Avec le déclenchement auto ça me paraît bien mais l'affichage de la mini-map est trop abrupt, je te propose quelques modifs sur l'opacité :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
| class Spriteset_Mini_Map
def initialize(map_name, event_ids)
@map_name = map_name
@viewport = Viewport.new(520, 0, 120, 90)
@viewport.z = 190
@mini_map_sprite = Sprite.new(@viewport)
@mini_map_sprite.bitmap = RPG::Cache.picture(@map_name)
@mini_map_sprite.opacity = 0
@player_dot = Sprite.new(@viewport)
@player_dot.bitmap = RPG::Cache.picture("Player_Dot")
@player_dot.ox = @player_dot.bitmap.width/2
@player_dot.oy = @player_dot.bitmap.height/2
@player_dot.opacity = 0
@events = []
@event_dots = []
for e in event_ids
event = $game_map.events[e]
if event
@events.push(event)
@event_dots.push(Sprite.new(@viewport))
@event_dots.last.bitmap = RPG::Cache.picture("Event_Dot")
@event_dots.last.ox = @event_dots.last.bitmap.width/2
@event_dots.last.oy = @event_dots.last.bitmap.height/2
@event_dots.last.opacity = 0
end
end
update
end
def dispose
@mini_map_sprite.dispose
@player_dot.dispose
for e in @event_dots
e.dispose
end
@viewport.dispose
end
def update
@mini_map_sprite.ox = $game_map.display_x*3/64
@mini_map_sprite.oy = $game_map.display_y*3/64
@mini_map_sprite.opacity += 8
@player_dot.x = ($game_player.real_x+64-$game_map.display_x)*3/64
@player_dot.y = ($game_player.real_y+64-$game_map.display_y)*3/64
@player_dot.opacity += 8
for i in 0...@events.size
@event_dots[i].x = (@events[i].real_x+64-$game_map.display_x)*3/64
@event_dots[i].y = (@events[i].real_y+64-$game_map.display_y)*3/64
@event_dots[i].opacity += 8
end
end
end |
Avec ça l'affichage de la mini-map se fait graduellement, c'est mieux. Enfin bon à toi de voir.
|
Wandering Souls : Jeu complet / Topic sur Oniro |
Noein -
posté le 16/03/2013 à 21:24:25 (155 messages postés)
| | Merci, l'affichage de la minimap est en en effet plus jolie avec les modifs que tu as apporté. J'étais justement en train de regarder la manière d'afficher une image en RGSS et les différents attributs qu'on pouvait assigner aux Sprites. J'ai tenter de faire des essais sur ton script pour pouvoir définir l'opacité finale de ma minimap. Je connais rien du tout aux scripts mais j'essai de comprendre un peu comment ça marche.
Cette portion de code correspond à l'opacité de départ de l'image ?
1
| @mini_map_sprite.opacity = 0 |
Et celle ci te permet de faire monter graduellement l'opacité à 255 ?
1
| @mini_map_sprite.opacity += 8 |
En dessous de la ligne précédente j'ai ajouter la ligne de code suivante de manière intuitive pour définir une opacité à 180.
1
| @mini_map_sprite.opacity = 180 |
J'ai fait de même pour les curseurs.
1
2
| @player_dot.opacity = 180
@event_dots[i].opacity = 180 |
Cela fonctionne mais j'aimerai savoir si j'ai bien compris comment tout cela fonctionnait et si ma démarche était bonne ?
|
Estheone -
posté le 16/03/2013 à 21:56:39 (312 messages postés)
| | Citation: Cette portion de code correspond à l'opacité de départ de l'image ? |
Oui.
Citation: Cela fonctionne mais j'aimerai savoir si j'ai bien compris comment tout cela fonctionnait et si ma démarche était bonne ? |
Non là ça ne se fait plus progressivement (ça passe direct à 180 dès la première frame).
Si tu veux fixer un maximum à 180 ce sont ces lignes qu'il faut rajouter (après les opacity +=) :
1
2
3
| @mini_map_sprite.opacity = [@mini_map_sprite.opacity, 180].min
@player_dot.opacity = [@player_dot.opacity, 180].min
@event_dots[i].opacity = [@event_dots[i].opacity, 180].min |
Ou alors tu inclus les opacity += dans des if (plus simple mais moins précis, l'opacité va dépasser 180 vu que ce n'est pas un multiple de 8) :
1
2
3
| if @mini_map_sprite.opacity < 180
@mini_map_sprite.opacity += 8
end |
|
Wandering Souls : Jeu complet / Topic sur Oniro |
Noein -
posté le 16/03/2013 à 22:15:30 (155 messages postés)
| | Citation: Non là ça ne se fait plus progressivement (ça passe direct à 180 dès la première frame). |
Je me suis concentré sur l'affichage finale si bien que je ne n'avais pas vu qu'il ne se faisait plus graduellement.
Merci en tous cas le résultat est vraiment sympa maintenant. Il faudrait que je me mette au RGSS pour comprendre un peu les scripts. C'est conseillé d'apprendre le Ruby ou pas pour comprendre le RGSS ?
|
Estheone -
posté le 16/03/2013 à 22:26:10 (312 messages postés)
| | Apprendre la syntaxe de base oui ça me semble indispensable (initialiser des variables, faire des boucles, créer des fonctions...). ^^
M'enfin, il te suffit de fouiller les scripts de base, quasiment tout ce que tu chercheras à faire se rapprochera d'un autre truc (le coup des .min pour imposer une valeur max tu peux le voir dans Game_Battler par exemple).
|
Wandering Souls : Jeu complet / Topic sur Oniro |
maxadona -
posté le 19/03/2013 à 16:31:59 (146 messages postés)
| Drawing my dreams on sheets of paper ... | J'ai un petit souci avec le SBS de Victor. Lorsque je veux ranimer un perso, ce message erreur s'affiche.
A la ligne 2611, on trouve ceci :
1
2
3
4
5
| alias :revive_ve_animated_battle :revive
def revive
call_pose(:revive, :clear)
revive_ve_animated_battle
end |
Mon Game_Actor n'a subit aucune modification antérieure et je tourne sous VX Ace.
Je me doute que je dois définir call_pose(:revive), mais n'y connaissant rien en script, je fais appel à vous ^^'. Btw, ça me permettra d'apprendre à définir des états
Merci d'avance.
Lien de la page de présentation du script.
|
Notre imagination ne serait-elle pas la folie de notre génie ? - Last Chance Projet (Site à mettre à jour) ... Présentation bientôt - Chaine Youtube |
Estheone -
posté le 19/03/2013 à 18:52:02 (312 messages postés)
| | Trouvé sur ton link :
Requires the Victor Engine – Basic Module
Il viendrait pas de là le problème ?
L'auteur du script a sûrement redéfini pas mal de trucs dans ce module.
|
Wandering Souls : Jeu complet / Topic sur Oniro |
Neither -
posté le 19/03/2013 à 18:52:55 (21 messages postés)
| | Résolu Par : Cortez
Support : Rpg Maker VX
Question : Comment faire un format parfait pour l'animation des sorts
Bonjour j'ai un petit soucis concernant l'animation des sorts , j'ai essayé de créer un sort avec des mouvements du Personnage: Sasuke et son Chidori mais problème j'ai de nombreux décalage et je suis perdu...j'ai remodifié plusieurs fois l'image mais rien à faire...
Voici le screen :
L'image Png que je veux faire :
[Spoiler] http://www.hapshack.com/images/pSE4f.png [/Spoiler]
Le résultat sur Rpg Maker VX :
[Spoiler] http://www.hapshack.com/images/tv38E.png [/Spoiler]
|
Cortez -
posté le 19/03/2013 à 20:23:50 (524 messages postés)
| | Réponse :
De mémoire les cases d'animation fond 192 x 192 pixels.
Le décalage provient soit de la taille de l'image qui n'est pas bonne (5 cases de large) Soit un décalage du sprite des personnages dans la case.
Aide tutoriel + ressource :
Je vais m'occuper de cette animation (c'est ma spécialité).
Par contre j'ai 2 choses à ajouter :
- Ton image est en JPG flou inutilisable, du coup va faire un tour ici :
http://spriters-resource.com/gameboy_advance/narutonc2/
- Je n'ais pas le temps d'en faire d'autre, pour t'aider je vais t'expliquer ma technique.
D'abord il te faut un Template (un fichier avec les cases dessinées)
Et aussi un logiciel de dessin qui gère les calques et transparences (Gimp, Paint.net)
Spoiler (cliquez pour afficher)
Ensuite il te faut la planche de sprites (je ne les agrandis pas comme ça dans RmVX tu n'auras qu'a modifier le zoom.)
Spoiler (cliquez pour afficher)
Ensuite afin d'éviter le décalage, il faut choisir la place du premier sprite dans la 1ere case.
(Pour faire simple on le place au milieu.)
Une fois la place choisie, tu sélectionne la 1ere case et tu la copie/colle sur chaque autre case du Template.
Spoiler (cliquez pour afficher)
Maintenant on à la position du sprite sur chaque case. Fait un nouveau calque et prend les autres sprites et place les de façon à respecter la le modèle du fond (conseil, prend comme référence les pieds.)
On voit bien la superposition aux niveau des pieds :
Spoiler (cliquez pour afficher)
Pour la suite, il suffit de continuer.
Le résultat final :
|
Neither -
posté le 19/03/2013 à 23:09:26 (21 messages postés)
| | Un grand merci à toi Cortez je vais pouvoir enfin créer des Animations géniales encore merci !!!
|
Cortez -
posté le 09/04/2013 à 18:47:37 (524 messages postés)
| | Demande d'aide pour syntaxe
Je suis en train d'apprendre quelques truc en ruby, notamment la traduction en script des commandes d'évènement. Je lis donc les script interpreter 1-7 et je trouve dans le numéro 5 une ligne un peu compliquée :
1
2
3
| # Show picture
$game_screen.pictures[number].show(@parameters[1], @parameters[2],
x, y, @parameters[6], @parameters[7], @parameters[8], @parameters[9]) |
Je voudrais savoir à quoi renvoie les nombreux "parameters"
ainsi que leur syntaxe et les valeur qu'il peuvent prendre (true/false, suite de mot, nombres, nom de fichier.)
Puisque dans l'idéal j'aimerais afficher une image selon un chiffre stocké dans une variable.
Exemple V[2] = 3 on affiche en image 1, l'image du nom de 3.png
si V[2] = 9 on affiche en image 1, l'image du nom de 9.png
|
Mack -
posté le 09/04/2013 à 18:52:37 (2310 messages postés)
- - | | Ils sont dans le même ordre que dans l'éditeur de RM.
Donc pour Ace :
Nom de l'image (String), Origine (Integer), X (Integer), Y (Integer), Zoom_X (Integer), Zoom_y (Integer), Opacity (Integer), Mode de Fusion ( Integer).
Grosso modo, ça doit être pareil pour tout les versions.
Pour avoir comme nom de fichier le contenu d'une variable faut mettre :
1
| $game_variables[ID].to_s+".png" |
Et petite astuce :
Tu peux décomposé une variable de cette façon grâce aux scripts :
1
2
3
4
5
6
7
| $game_variables[51] = $game_variables[50].to_s[0]
if ( $game_variables[50].to_s.size>1 )
$game_variables[52] = $game_variables[50].to_s[1]
end
if ( $game_variables[50].to_s.size>2 )
$game_variables[53] = $game_variables[50].to_s[2]
end |
Et une explication :
La variable 51 devient le premier caractère de la variable 50.
Si la variable 50 comporte deux caractères, alors la variable 52 devient le second.
Si la variable 50 comporte trois caractère, la variable 53 devient le troisième.
Ça marche pour les chiffres, comme pour le texte.
|
( Je prend note de tout les commentaires, même si je n'y répond pas ) |
Nukidoudi -
posté le 09/04/2013 à 18:52:39 (736 messages postés)
- | yo | @parameters correspond aux arguments extraits de ce que tu as entré dans l'interface graphique dédié à cette commande.
Les arguments que prennent show se trouvent dans le script Game_Picture show(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
A ce stade ci tu peux facilement faire :
1
2
3
|
$game_screen.pictures[number].show($game_variables[2].to_s, 0, x, y, 100.0, 100.0, 255, 0)
|
A noter que le ".png" est useless.
|
https://xvw.lol |
Cortez -
posté le 11/04/2013 à 11:28:35 (524 messages postés)
| | [RPGmakerXP]Ajout de la profondeur z=1 pour une image.
Re-boujour, j'ai un autre soucis... Il faudrait que l'image n°8 suivent les priorités d'affichages donc qu'elle soit en couche 1 (sous la tête du perso et devant les pieds).
Je sais par expérience que c'est la valeur Z (profondeur qu'il faut modifier) mais je ne trouve pas comment faire.
Il me semble que la profondeur ne soit pas directement modifiable car le script de base n'inclut pas ce paramètre dans la classe Picture.
|
Estheone -
posté le 11/04/2013 à 18:42:48 (312 messages postés)
| | Il y a plusieurs problèmes qui vont se poser donc tu vas devoir faire plusieurs modifs importantes.
Déjà, les images et les charas ne sont pas sur le même viewport d'origine, donc même en mettant à l'image un z négatif il sera toujours au-dessus du héros.
Dans l'initialize du Spriteset_Map, remplace :
1
2
3
4
| for i in 1..50
@picture_sprites.push(Sprite_Picture.new(@viewport1,
$game_screen.pictures[i]))
end |
Ensuite dans Game_Picture tu rajoutes un
avec les attr_reader
et tu initialises z dans l'initialize :
Dans Sprite_Picture, tu remplaces le self.z de l'update par :
Pour finir, tu modifies la coordonnée z de l'image en appel de script.
Exemple :
1
| $game_screen.pictures[8].z = 300 |
Il te reste plus qu'à trouver la bonne valeur z pour obtenir l'effet voulu.
|
Wandering Souls : Jeu complet / Topic sur Oniro |
Cortez -
posté le 23/04/2013 à 10:24:20 (524 messages postés)
| | Edit : le système marche bien mais toutes les images on une priorité égale à 2,3,4 et du coup les effets sur les map sont foirés même avec la commande en script pour chaque image, ca marche pas, z reste compris entre 1 et 4 (la couche 4 et 5 passe au dessus).
T'as une idées ?
Du coup j'ai une autre question :
Syntaxe en ruby
La ligne suivante, permet d'indiquer les monstres d'ID listé qui sont pris en compte dans un script.
Je voudrais ajouter tous les monstres de la base de donnée.
Mais je voudrais éviter de les rentrer 1 par 1 :
1
| ENEMY_ID = [1,2,3,4,5,6,7,8,9,10, ... ,33,34] |
Existe-t-il une façon d'écrire pour inclure tout un groupe de valeur ?
|
Estheone -
posté le 23/04/2013 à 11:00:40 (312 messages postés)
| | Normalement avec un z de 99999 ou un truc comme ça ton image devrait être au-dessus de n'importe quel tile et même au-dessus des fogs, du coup je sais pas quoi te dire.
Pour l'autre question :
1
2
| ENEMY_ID = []
for i in 1..34 ; ENEMY_ID.push(i) ; end |
|
Wandering Souls : Jeu complet / Topic sur Oniro |
Cortez -
posté le 23/04/2013 à 11:16:08 (524 messages postés)
| | Bon pour les images, je verrais plus tard (le viewport 1 est limité en couche je crois). Il faudrais mieux faire une classe alternative pour afficher des images selon le viewport.
Utilisation normale = picture viewport2
Appel en script = picture viewport1 avec z = 2
Bref pour la deuxième réponse, je voulais juste savoir si je veux faire 2 intervalles, je fait comme ça ?
1
2
| ENEMY_ID = []
for i in 1..34 ; for i in 50..100; ENEMY_ID.push(i) ; end |
|
Estheone -
posté le 23/04/2013 à 11:18:06 (312 messages postés)
| | Citation: Utilisation normale = picture viewport2
Appel en script = picture viewport1 avec z = 2 |
Les sprites des pictures sont initialisés à l'avance donc je suis pas convaincu que tu puisses changer leur viewport par la suite.
En revanche tu peux toujours modifier la façon dont ils sont initialisés pour en avoir sur le viewport 1 et d'autres sur le 2 :
1
2
3
4
5
6
7
8
| for i in 1..25
@picture_sprites.push(Sprite_Picture.new(@viewport1,
$game_screen.pictures[i]))
end
for i in 26..50
@picture_sprites.push(Sprite_Picture.new(@viewport2,
$game_screen.pictures[i]))
end |
Citation: si je veux faire 2 intervalles, je fait comme ça ? |
Comme ça plutôt :
1
2
3
| ENEMY_ID = []
for i in 1..34 ; ENEMY_ID.push(i) ; end
for i in 50..100 ; ENEMY_ID.push(i) ; end |
|
Wandering Souls : Jeu complet / Topic sur Oniro | Aller à la page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73Index du forum > Entraide > [Scripts] Petites questions connes sur les SCRIPTS!!
|