|
| | Maps en 3d (Isométrie) | |
| | Auteur | Message |
---|
arshes Jongleur Itinérant
Nombre de messages : 81 Age : 29 Date d'inscription : 23/06/2007
| Sujet: Maps en 3d (Isométrie) Mar 10 Juil 2007, 12:21 | |
| Auteur: MgCaladtogel Screen: Demo: iciLe maillage doit etre comme ça: Topic d'origine : iciCe script est à mettre au dessus de " Main" et nommez-le " 3d_iso" Script: - Code:
-
#--------------------------------------------------------------------------------------------------------------- # ● Script 2D_ISO, créé par MGCaladtogel pour la communauté rpgmakerxp-factory.net # maj 16/08/06 #--------------------------------------------------------------------------------------------------------------- #============================================================================== # ■ Ajouts, modifications des classes d'origine # # indications : $game_map désigne la carte de données # $game_map_iso désigne la carte en 2D-isométrique #==============================================================================
#============================================================================== # ■ Game_Map #============================================================================== class Game_Map #-------------------------------------------------------------------------- # ● Le scrolling doit s'effectuer en fonctions des dimensions de la carte # en isométrique #-------------------------------------------------------------------------- def scroll_down(distance) corr = (($game_map.height + $game_map.width)%2 == 0 ? 0 : 4*16) @display_y = [@display_y + distance, 128*$game_map_iso.height - 4*480 - corr].min end #-------------------------------------------------------------------------- def scroll_right(distance) @display_x = [@display_x + distance, 128*$game_map_iso.width - 4 * 640].min end end
#============================================================================== # ■ Game_Character #============================================================================== class Game_Character #-------------------------------------------------------------------------- # ● On change les coordonnées d'affichage des characters à l'écran #-------------------------------------------------------------------------- def screen_x return (@real_x - @real_y)/4 + 32*$game_map.height - 0 - $game_map.display_x/4 end #-------------------------------------------------------------------------- def screen_y y = (@real_y + @real_x) / 8 + 24 - $game_map.display_y/4 if @jump_count >= @jump_peak n = @jump_count - @jump_peak else n = @jump_peak - @jump_count end return y - (@jump_peak * @jump_peak - n * n) / 2 end #-------------------------------------------------------------------------- def screen_z(height = 0) if @always_on_top return 999 end z = screen_y if @tile_id > 0 return z + $game_map_iso.priorities[@tile_id] * 32 else return z + ((height > 32) ? 31 : 0) end end end
#============================================================================== # ■ Game_Player #============================================================================== class Game_Player < Game_Character #-------------------------------------------------------------------------- def center(x, y) max_x = ($game_map.width - 20) * 128 max_y = ($game_map.height - 15) * 128 max_xy = [max_x, max_y].max $game_map.display_x = 2*max_xy $game_map.display_y = 2*max_xy end #-------------------------------------------------------------------------- # ● Les commandes directionnelles en diagonale sont activées, et on s'arrange # pour que le scrolling se passe bien #-------------------------------------------------------------------------- def update last_moving = moving? unless moving? or $game_system.map_interpreter.running? or @move_route_forcing or $game_temp.message_window_showing case Input.dir8 when 1..2 move_down when 3 move_right when 4 move_left when 7 move_left when 6 move_right when 8..9 move_up end end last_real_x = @real_x last_real_y = @real_y super disp_y = screen_y + $game_map.display_y/4 disp_x = screen_x + $game_map.display_x/4 if CENTER_Y - (4*disp_y - $game_map.display_y) < 0 $game_map.scroll_down(4*disp_y - $game_map.display_y - CENTER_Y) end if CENTER_X - (4*disp_x - $game_map.display_x) > 0 $game_map.scroll_left(CENTER_X - (4*disp_x - $game_map.display_x)) end if CENTER_X - (4*disp_x - $game_map.display_x) < 0 $game_map.scroll_right(4*disp_x - $game_map.display_x - CENTER_X) end if CENTER_Y - (4*disp_y - $game_map.display_y) > 0 $game_map.scroll_up(CENTER_Y - (4*disp_y - $game_map.display_y)) end unless moving? if last_moving result = check_event_trigger_here([1,2]) if result == false unless $DEBUG and Input.press?(Input::CTRL) if @encounter_count > 0 @encounter_count -= 1 end end end end if Input.trigger?(Input::C) check_event_trigger_here([0]) check_event_trigger_there([0,1,2]) end end end end
#============================================================================== # ■ Scene_Title #============================================================================== class Scene_Title alias main_orig main #-------------------------------------------------------------------------- # ● Dans MapInfos on va trouver l'identité de la carte parente à la carte # de données (donc l'id de la carte en iso) #-------------------------------------------------------------------------- def main $data_map_infos = load_data("Data/MapInfos.rxdata") main_orig end end
#============================================================================== # ■ Spriteset_Map #============================================================================== class Spriteset_Map #-------------------------------------------------------------------------- # ● On va associer à la tilemap, qui gère l'affichage de la carte à l'écran, # les données de la carte en 2D-isométrique #-------------------------------------------------------------------------- def initialize @viewport1 = Viewport.new(0, 0, 640, 480) @viewport2 = Viewport.new(0, 0, 640, 480) @viewport3 = Viewport.new(0, 0, 640, 480) @viewport2.z = 200 @viewport3.z = 5000 @tilemap = Tilemap.new(@viewport1) map_infos = $data_map_infos[$game_map.map_id] $game_map_iso = Game_Map.new $game_map_iso.setup(map_infos.parent_id) @tilemap.tileset = RPG::Cache.tileset($game_map_iso.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_iso.data @tilemap.priorities = $game_map_iso.priorities @panorama = Plane.new(@viewport1) @panorama.z = -1000 @fog = Plane.new(@viewport1) @fog.z = 3000 @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)) @weather = RPG::Weather.new(@viewport1) @picture_sprites = [] for i in 1..50 @picture_sprites.push(Sprite_Picture.new(@viewport2, $game_screen.pictures[i])) end @timer_sprite = Sprite_Timer.new update end #-------------------------------------------------------------------------- # ● Attention : pour ma carte test j'ai fait en sorte que le panorama bouge # de la même façon que la tilemap. # Pour retrouver le déplacement d'origine des panoramas, il faut changer : # @panorama.ox = $game_map.display_x / 4 # @panorama.oy = $game_map.display_y / 4 # en : # @panorama.ox = $game_map.display_y / 8 # @panorama.oy = $game_map.display_y / 8 #-------------------------------------------------------------------------- def update if @panorama_name != $game_map_iso.panorama_name or @panorama_hue != $game_map_iso.panorama_hue @panorama_name = $game_map_iso.panorama_name @panorama_hue = $game_map_iso.panorama_hue if @panorama.bitmap != nil @panorama.bitmap.dispose @panorama.bitmap = nil end if @panorama_name != "" @panorama.bitmap = RPG::Cache.panorama(@panorama_name, @panorama_hue) end Graphics.frame_reset end if @fog_name != $game_map_iso.fog_name or @fog_hue != $game_map_iso.fog_hue @fog_name = $game_map_iso.fog_name @fog_hue = $game_map_iso.fog_hue if @fog.bitmap != nil @fog.bitmap.dispose @fog.bitmap = nil end if @fog_name != "" @fog.bitmap = RPG::Cache.fog(@fog_name, @fog_hue) end Graphics.frame_reset end @tilemap.ox = $game_map.display_x / 4 @tilemap.oy = $game_map.display_y / 4 @tilemap.update @panorama.ox = $game_map.display_x / 4 @panorama.oy = $game_map.display_y / 4 @fog.zoom_x = $game_map_iso.fog_zoom / 100.0 @fog.zoom_y = $game_map_iso.fog_zoom / 100.0 @fog.opacity = $game_map_iso.fog_opacity @fog.blend_type = $game_map_iso.fog_blend_type @fog.ox = $game_map.display_x / 4 + $game_map.fog_ox @fog.oy = $game_map.display_y / 4 + $game_map.fog_oy @fog.tone = $game_map.fog_tone for sprite in @character_sprites sprite.update end @weather.type = $game_screen.weather_type @weather.max = $game_screen.weather_max @weather.ox = $game_map.display_x / 4 @weather.oy = $game_map.display_y / 4 @weather.update for sprite in @picture_sprites sprite.update end @timer_sprite.update @viewport1.tone = $game_screen.tone @viewport1.ox = $game_screen.shake @viewport3.color = $game_screen.flash_color @viewport1.update @viewport3.update end end
#============================================================================== # ■ Interpreter #============================================================================== class Interpreter #-------------------------------------------------------------------------- # ● Commande : "Modifier les propriétés de la carte..." #-------------------------------------------------------------------------- def command_204 case @parameters[0] when 0 $game_map_iso.panorama_name = @parameters[1] $game_map_iso.panorama_hue = @parameters[2] when 1 $game_map_iso.fog_name = @parameters[1] $game_map_iso.fog_hue = @parameters[2] $game_map_iso.fog_opacity = @parameters[3] $game_map_iso.fog_blend_type = @parameters[4] $game_map_iso.fog_zoom = @parameters[5] $game_map_iso.fog_sx = @parameters[6] $game_map_iso.fog_sy = @parameters[7] when 2 $game_map_iso.battleback_name = @parameters[1] $game_temp.battleback_name = @parameters[1] end return true end #-------------------------------------------------------------------------- # ● Commande : "Modifier le ton du brouillard..." #-------------------------------------------------------------------------- def command_205 $game_map_iso.start_fog_tone_change(@parameters[0], @parameters[1] * 2) return true end #-------------------------------------------------------------------------- # ● Commande : "Modifier l'opacité du brouillard..." #-------------------------------------------------------------------------- def command_206 $game_map_iso.start_fog_opacity_change(@parameters[0], @parameters[1] * 2) return true end end Explication: Il va donc falloir faire deux cartes. Tout d'abord choisir les dimensions de la carte de données, et créer les contours de la carte en isométrie à partir de ces dimensions. L'origine théorique de la carte (normalement en haut à gauche) doit être placée en haut. exemple pour une carte 20*16https://2img.net/r/ihimizer/img291/6128/tutoiso02th5.pngSi la somme hauteur + largeur de la carte de données est impaire, la hauteur de la carte en isométrique ne sera pas divisible par 32 et il faudra alors arrondir les dimensions au tile supérieur en plaquant la carte en isométrique en haut. exemple pour une carte 19*16 (bon, d'accord ça n'existe pas, mais c'est pour le principe) https://2img.net/r/ihimizer/img141/6204/tutoiso03at8.pngEnsuite vous dessinez votre carte en isométrique comme vous voulez, avec les différentes couches comme il faut bien pour les histoires de priorités de superposition. L'étape suivante consiste à créer la carte de données en tant que fille de la carte isométrique, et remplir par exemple sa première couche d'éléments qui vont définir la passabilité et les autres données des cases correspondantes sur la carte isométrique (il faut essayer de faire une sorte de rotation à 45° pour bien placer les carreaux). Par exemple j'ai pris le premier tileset et je me suis servi d'un élément impassable (le marron de la tente) pour définir les endroits inaccessibles sur la carte isométrique : j'aurais pu prendre n'importe quel autre tile impassable. Je me suis également servi des hautes herbes pour définir des cases "obscurcissantes". https://2img.net/r/ihimizer/img153/3461/tutoiso04wt7.pngEnsuite tous les évènements seront placés sur cette carte de données. Les effets de panoramas et brouillards, faisant plutôt partie du "visuel", sont à intégrer dans le chipset de la carte en isométrique. | |
| | | Invité Invité
| Sujet: Re: Maps en 3d (Isométrie) Mar 10 Juil 2007, 12:26 | |
| O__O Exelllennnttt merci beaucoup |
| | | deadcell Trouvère Follet
Nombre de messages : 625 Age : 35 Niveau Rpg Maker : Excellent Niveau Jeux Préférés : Final Fantasy, Resident evil... Date d'inscription : 21/03/2007
| Sujet: Re: Maps en 3d (Isométrie) Mar 10 Juil 2007, 12:39 | |
| Super le script, mais j'ai une question faut-il des ressources particulière, parceque c'est quand même de l'isométrie que nous sommes en trin de parler. | |
| | | arshes Jongleur Itinérant
Nombre de messages : 81 Age : 29 Date d'inscription : 23/06/2007
| Sujet: Re: Maps en 3d (Isométrie) Mar 10 Juil 2007, 12:40 | |
| oui il faut faire ces ressource mais l'iso c'est pas trop compliquer avec paint tu peut faire des super truc | |
| | | deadcell Trouvère Follet
Nombre de messages : 625 Age : 35 Niveau Rpg Maker : Excellent Niveau Jeux Préférés : Final Fantasy, Resident evil... Date d'inscription : 21/03/2007
| Sujet: Re: Maps en 3d (Isométrie) Mar 10 Juil 2007, 12:45 | |
| Oui, c'est sur, mais des fois les gens ont tendances à oublier que RPG MAKER XP est conçu pour le 2D et non le 3D. Pour le 3D autant prendre RPG MAKER 3D, qui est payant, et très mauvais. Sinon, il faut se mettre à la programmation. Mais je reconnais que ce script est mignon, et pourra surement servir à certaines personnes. | |
| | | arshes Jongleur Itinérant
Nombre de messages : 81 Age : 29 Date d'inscription : 23/06/2007
| Sujet: Re: Maps en 3d (Isométrie) Mar 10 Juil 2007, 12:59 | |
| de rpg maker 3d n'existe pas et de deux rien a dire
rpg maker 3d na jamais exister si tu veux parler de 3d rpg editor je comprend va sur [Lien injustement retiré par Don] il sont en train de faire la traduction | |
| | | flea Trouvère Follet
Nombre de messages : 707 Age : 30 Projet(s) en cours : Projet(s) en cours : Niveau Rpg Maker : 6/10 (Graphiste, héhé...) Jeux Préférés : Sly, Mario Kart, Rayman Date d'inscription : 27/03/2007
| Sujet: Re: Maps en 3d (Isométrie) Mar 10 Juil 2007, 13:01 | |
| Si RPG Maker 3D existe, et il est gratuit. Sinon, merci de nous faire partager ce script. | |
| | | arshes Jongleur Itinérant
Nombre de messages : 81 Age : 29 Date d'inscription : 23/06/2007
| Sujet: Re: Maps en 3d (Isométrie) Mar 10 Juil 2007, 13:05 | |
| rpg maker 3d n'existe pas on dit rpg 3d builder ou 3d rpg editor rm3d n'existe pas | |
| | | deadcell Trouvère Follet
Nombre de messages : 625 Age : 35 Niveau Rpg Maker : Excellent Niveau Jeux Préférés : Final Fantasy, Resident evil... Date d'inscription : 21/03/2007
| Sujet: Re: Maps en 3d (Isométrie) Mar 10 Juil 2007, 13:07 | |
| Inculte, RPG MAKER 3D existe !!!! sauf qu'il n'existe qu'au japon, c'est une version paynte, et trop nul ! Tiens, la prochaine fois, au lieux de poster n'importe quoi, vérifie ce que tu avances !
Dernière édition par le Mar 10 Juil 2007, 13:09, édité 1 fois | |
| | | arshes Jongleur Itinérant
Nombre de messages : 81 Age : 29 Date d'inscription : 23/06/2007
| Sujet: Re: Maps en 3d (Isométrie) Mar 10 Juil 2007, 13:08 | |
| tu parle de sa | |
| | | deadcell Trouvère Follet
Nombre de messages : 625 Age : 35 Niveau Rpg Maker : Excellent Niveau Jeux Préférés : Final Fantasy, Resident evil... Date d'inscription : 21/03/2007
| Sujet: Re: Maps en 3d (Isométrie) Mar 10 Juil 2007, 13:10 | |
| Oui, c'est bien RPG MAKER 3D ! Je sais ce que je dit ! | |
| | | arshes Jongleur Itinérant
Nombre de messages : 81 Age : 29 Date d'inscription : 23/06/2007
| Sujet: Re: Maps en 3d (Isométrie) Mar 10 Juil 2007, 13:12 | |
| non c'est 3d rpg editor je suis sur le forum de puissance making j'ai posser la question quand sortira la patch il ma repondue
-bientot -stp ne dit plus rpg maker 3d et dit 3d rpg editor cest deux logiciel non rien a voir | |
| | | deadcell Trouvère Follet
Nombre de messages : 625 Age : 35 Niveau Rpg Maker : Excellent Niveau Jeux Préférés : Final Fantasy, Resident evil... Date d'inscription : 21/03/2007
| Sujet: Re: Maps en 3d (Isométrie) Mar 10 Juil 2007, 13:16 | |
| Déjà d'une, tu n'as aucun ordres à me donner pour commencer, ensuite, tu ne vas pas apprendre à un informaticien son métier. De plus, ce que je viens de te montrer, c'est RPG MAKER 3D, version japonnaise, payante, sortit qu'au Japon ! Il y a eu une team qui trvaillait sur une traduction, mais qui à laisser tombé, trop compliquer ! La conversation est terminée. Edit Patchwork : - Citation :
- -stp ne dit plus rpg maker 3d et dit 3d rpg editor cest deux logiciel non rien a voir
Je ne crois pas qu'il s'adressait à toi mais qu'il mettait la réponse qu'on lui avait donnée sur le forum. | |
| | | Patchwork Auguste Polichinelle
Nombre de messages : 1382 Age : 43 Niveau Rpg Maker : se débrouille. Jeux Préférés : FF, Suikoden, Mario kart, ... Date d'inscription : 07/06/2007
| Sujet: Re: Maps en 3d (Isométrie) Mar 10 Juil 2007, 13:28 | |
| Bon, on va arrèter le hors-sujet ici, si vous voulez continer à parler de RPG mak... de rpg buil... enfin, du programme pour faire des jeux en 3D, créez un topic dans la section approprié, ça sera plus simple.
Merci à toi Arshes pour ce Script, je te rajoute 1 PA [PA ajouté] meme si je crois qu'il comportait quelques bug, faudra que je le réessaye.
Bon, vous vous faites une bise et on ne se dispute plus. | |
| | | Don Estebahn Maître du Savoir
Nombre de messages : 2145 Age : 34 Jeux Préférés : Soul Reaver, Morrowind, Way of the Samurai Date d'inscription : 18/02/2007
| Sujet: Re: Maps en 3d (Isométrie) Mar 10 Juil 2007, 13:36 | |
| Bon, les jeunes, ça suffit . - arshes, il est strictement interdit de donner des liens vers d'autres forums ou sites de making. J'aimerais que tu ailles faire un tour sur le topic des règles dans la section info pour que ce genre d'écart ne se reproduise plus. - Je suis convaincu comme deadcell qu'il existe une version 3d japonaise de Rpg Maker. J'ai lu quelques articles dessus au moment où il devait sortir, elle existe bien payante et non-traduite. Après recherche, s'il s'avère que si on l'appelle couramment Rpg Maker 3d, le vrai nom du soft est effectivement 3d Rpg Editor (visitez ce lien qui n'a rien d'ambigu). Du coup, si arshes a raison sur le fait que 3d Rpg Editor est le nom du logiciel, il a tort sur le fait que lui et Rpg Maker 3d sont deux logiciels à ne pas confondre ; d'après le lien que j'ai trouvé, l'un est l'appellation officielle et l'autre l'appellation officieuse. Le débat s'arrête ici. Si vous voulez le continuer, MP ou topic dans la tribune. EDIT : Erf, Patchou m'a doublé sur ce coup ^^'.
Dernière édition par le Mar 10 Juil 2007, 14:07, édité 1 fois | |
| | | deadcell Trouvère Follet
Nombre de messages : 625 Age : 35 Niveau Rpg Maker : Excellent Niveau Jeux Préférés : Final Fantasy, Resident evil... Date d'inscription : 21/03/2007
| Sujet: Re: Maps en 3d (Isométrie) Mar 10 Juil 2007, 13:41 | |
| T'es trop bon mon petit Don ! au passage, moi je suis plus vieux que toi :p (prend le comme un compliment car tu es encore jeune) :p^^
EDIT by Don : Je suis Don, pauvre mécréant. Personne n'est plus vieux que moi dans sa tête. | |
| | | Contenu sponsorisé
| Sujet: Re: Maps en 3d (Isométrie) | |
| |
| | | | Maps en 3d (Isométrie) | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |
|