[Aide] Map en Isometrique

La création de jeux indépendants/amateurs (tuto, entraide, questions...) sous les moteurs de la série RPG Maker.
Raytwo-x
Koruldia Master
Messages : 2041

Message non lu par Raytwo-x » sam. juil. 10, 2010 10:42 pm

Bon, j'ai grillé l'arnaque du script : il a pas fait tant que ça le mec.

Dans les mouvements que les persos à le droit, il y en a DEJA 8 à la base dans VX. Il a juste changer les déplacements par case par ceux en diagonale en faites.

( Bon, je dis "il a juste", mais j'y avais pas penser.. xD )

Bon, je continue, même si j'la sens mal...

Quand au script de déplacement 8 directions le Watchinofoye ( je suis pas sur que c'est lui qui l'a posté ), c'est EXACTEMENT le même, version XP... >< J'suis pas dans la m**** , me faudrait un déplacement par pixel pour bien faire.

Watchinofoye
Koruldia God Warrior
Messages : 818
Localisation : Encore instable
Contact :

Message non lu par Watchinofoye » sam. juil. 10, 2010 11:43 pm

Non c'est pas moi, j'ai pas posté de script.
Waye

Raytwo-x
Koruldia Master
Messages : 2041

Message non lu par Raytwo-x » dim. juil. 11, 2010 12:35 am

Ouais, voila, après vérification, c'était Giro, désolé Watch ! :mecontent:

Bon, d'après ce que je vois, je suis pas assez "qualifier" pour te faire ton script, mais j'ai tester ça, et c'est exactement les déplacements que tu veux, sauf que.. c'est spécial.

Bref, je te laisse voir en cliquant ici

King Xtincell
Koruldia Master
Messages : 1192
Localisation : Au centre d'un univers inconstant
Contact :

Message non lu par King Xtincell » dim. juil. 11, 2010 5:10 pm

Je l'ai deja testé et il ne supporte pas le mapping en image et panorama (y a un bug et un deplacement de 1 carreau a un moment donnée qui me salope tout le boulot) C'est pourquoi je voulais un script de deplacement exclusivement (si tu peux isoler le script de deplacement du script de mapping en iso ce sera bon)
Image

Raytwo-x
Koruldia Master
Messages : 2041

Message non lu par Raytwo-x » mer. juil. 14, 2010 12:42 pm

Juste pour dire que j'ai réussi à isoler les déplacements du script, mais je dois encore en changer l'angle par contre...

Ca réveillera p'tet un peu le topic au passage :p
C'est juste pour te montrer que j'ai chercher un minimum xD

Edit : tiens, t'as changer ton avatar en émo souriant?

King Xtincell
Koruldia Master
Messages : 1192
Localisation : Au centre d'un univers inconstant
Contact :

Message non lu par King Xtincell » mer. juil. 14, 2010 12:54 pm

Mon sauveur, gloire a toi :D J'attend le resultat final avec impatience...
Bref tu connais deja comment fonctionne le concept d'angle d'iso donc je reviendrai pas dessus par contre j'ai un mini soucis. Je souhaite creer un deplacement nolimit qui permet de se deplacer suivant des coordonnées negatives. Je crois que par defaut le 0-0 c'est la case en haut a gauche, je voulais pouvoir redefinir l'origine pour pouvoir appliquer le deplacemetn (tout en conservant les regles de collision). C'est un des soucis majeur du script de deplacement, a moins que t'ai trouvé une autre solution...j'attend de voir...

edit : ah t'as remarqué aussi, j'ai voulu faire un avatar qui s'eloigne completement du premier pour marquer un changement
Image

Raytwo-x
Koruldia Master
Messages : 2041

Message non lu par Raytwo-x » mer. juil. 14, 2010 1:03 pm

La modification que j'ai fais n'utilise plus le système d'events bizarre et tout ce bordel, mais je vois pas trop de quoi tu parles en faites...

Bref, voila ton code

A nommer comme tu veux ( de base, il s'apelle Isometric(Basic) )

Code : Tout sélectionner

#=========================================== ===================================
# ■ Scene_Title
#================================================= =============================
class Scene_Title
  alias main_orig main
  #------------------------------------------------- -------------------------
  # ● Loads MapInfos so that Iso map id's can be loaded according to the current map.
  #------------------------------------------------- -------------------------
  def main
    $data_map_info        = load_data("Data/MapInfos.rvdata")
    main_orig
  end
end

#================================================= =============================
# ■ Game_Character
#================================================= =============================
class Game_Character
  #------------------------------------------------- -------------------------
  # ● Update the position of the characters to the screen according to x,y in isometric 
  #------------------------------------------------- -------------------------

  def screen_x
      return ((@real_x - @real_y)/8 + (32 * $game_map.height) - 0 - $game_map.display_x/8) - 16
  end
  #------------------------------------------------- -------------------------

  def screen_y
      y = (@real_y + @real_x) / 16 + 24 - $game_map.display_y/8
      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
  end

class Game_Player < Game_Character
  #------------------------------------------------- -------------------------
  # * Update Scroll
  #------------------------------------------------- -------------------------

  def update_scroll(last_real_x, last_real_y)
      disp_x = screen_x + $game_map.display_x/8
      disp_y = screen_y + $game_map.display_y/8
      if CENTER_Y - (8*disp_y - $game_map.display_y) > 0
        $game_map.scroll_up(CENTER_Y - (8*disp_y - $game_map.display_y))
      end
      if CENTER_Y - (8*disp_y - $game_map.display_y) < 0  
        $game_map.scroll_down(8*disp_y - $game_map.display_y - CENTER_Y)
      end
      if CENTER_X - (8*disp_x - $game_map.display_x) > 0
        $game_map.scroll_left(CENTER_X - (8*disp_x - $game_map.display_x))
      end
      if CENTER_X - (8*disp_x - $game_map.display_x) < 0
        $game_map.scroll_right(8*disp_x - $game_map.display_x - CENTER_X)
      end
    end
  
  #------------------------------------------------- -------------------------
  # * Set Map Display Position to Center of Screen
  #     x : x-coordinate
  #     y : y-coordinate
  #------------------------------------------------- -------------------------

  def center(x, y)
      update_scroll(@real_x, @real_y)
  end
end
Et pour l'autre, tu peux l'appeller genre Pixel Movement, a mettre en dessous de celui que tu as.

Code : Tout sélectionner

#=========================================== ===================================
#  4 DIRECTIONAL PIXEL MOVEMENT - Player only!
#================================================= =============================

#================================================= =============================
# ● Game_Player
#================================================= =============================
class Game_Player < Game_Character
  #------------------------------------------------- -------------------------
  # ● Initialize
  #------------------------------------------------- -------------------------
  alias gc_pix_init initialize
  def initialize
    gc_pix_init
    @x = 0.0
    @y = 0.0
    @real_x = 0.0
    @real_y = 0.0
    @inc_steps = 0
  end
  #------------------------------------------------- -------------------------
  # * Increase Steps
  #------------------------------------------------- -------------------------
  alias gc_pix_inc_stps increase_steps
  def increase_steps
    if @inc_steps >= 4
      gc_pix_inc_stps
      @inc_steps = 0
    else
      @inc_steps += 1
    end
  end
  #------------------------------------------------- -------------------------
  # * Move Down
  #     turn_ok : Allows change of direction on the spot
  #------------------------------------------------- -------------------------
  def move_down(turn_ok = true)
    if passable?(@x.to_i, @y.to_i+1)                  # Passable
      turn_down
      @y += 1.0/8
      @real_y = (@y-1.0/6)*256
      increase_steps
      @move_failed = false
    else                                    # Impassable
      if @y < @y.to_i+1-(1.0/4) #if there is still area to move but next square is impassable
        turn_down
        @y += 1.0/8
        @real_y = (@y-1.0/6)*256
        increase_steps
        @move_failed = false
        return
      end
      
      turn_down if turn_ok
      check_event_trigger_touch(@x.to_i, @y.to_i+1)   # Touch event is triggered?
      @move_failed = true
    end
  end
  #------------------------------------------------- -------------------------
  # * Move Left
  #     turn_ok : Allows change of direction on the spot
  #------------------------------------------------- -------------------------
  def move_left(turn_ok = true)
    if passable?(@x.to_i-1, @y.to_i)                  # Passable
      turn_left
      @x -= 1.0/4 
      if $game_map.loop_horizontal?
        @y += $game_map.width
        @y %= $game_map.width
      end
      @real_x = (@x+1.0/4)*256
      increase_steps
      @move_failed = false
    else                                    # Impassable
      if @x.to_i < @x #if there is still area to move but next square is impassable
        turn_left
        @x -= 1.0/4
        if $game_map.loop_horizontal?
          @y += $game_map.width
          @y %= $game_map.width
        end
        @real_x = (@x+1.0/4)*256
        increase_steps
        @move_failed = false
        return
      end
      turn_left if turn_ok
      check_event_trigger_touch(@x.to_i-1, @y.to_i)   # Touch event is triggered?
      @move_failed = true
    end
  end
  #------------------------------------------------- -------------------------
  # * Move Right
  #     turn_ok : Allows change of direction on the spot
  #------------------------------------------------- -------------------------
  def move_right(turn_ok = true)
    if passable?(@x.to_i+1, @y.to_i)                  # Passable
      turn_right
      @x += 1.0/4 
      if $game_map.loop_horizontal?
        @y += $game_map.width
        @y %= $game_map.width
      end
      @real_x = (@x-1.0/4).to_f*256
      increase_steps
      @move_failed = false
    else                                    # Impassable
      if @x < @x.to_i+1-(1.0/4) #if there is still area to move but next square is impassable
        turn_right
        @x += 1.0/4 
        if $game_map.loop_horizontal?
          @y += $game_map.width
          @y %= $game_map.width
        end
        @real_x = (@x-1.0/4).to_f*256
        increase_steps
        @move_failed = false
        return
      end
      
      turn_right if turn_ok
      check_event_trigger_touch(@x.to_i+1, @y.to_i)   # Touch event is triggered?
      @move_failed = true
    end
  end
  #------------------------------------------------- -------------------------
  # * Move up
  #     turn_ok : Allows change of direction on the spot
  #------------------------------------------------- -------------------------
  def move_up(turn_ok = true)
    if passable?(@x.to_i, @y.to_i-1)                  # Passable
      turn_up
      @y -= 1.0/4
      if $game_map.loop_vertical?
        @y += $game_map.height 
        @y %= $game_map.height
      end
      @real_y = (@y+1.0/4)*256
      increase_steps
      @move_failed = false
    else                                    # Impassable
      if @y.to_i < @y #if there is still area to move but next square is impassable
        turn_up
        @y -= 1.0/4 
        if $game_map.loop_vertical?
          @y += $game_map.height 
          @y %= $game_map.height
        end
        @real_y = (@y+1.0/4)*256
        increase_steps
        @move_failed = false
        return
      end
      turn_up if turn_ok
      check_event_trigger_touch(@x.to_i, @y.to_i-1)   # Touch event is triggered?
      @move_failed = true
    end
  end
  #------------------------------------------------- -------------------------
  # * Determine if Same Position Event is Triggered
  #     triggers : Trigger array
  #------------------------------------------------- -------------------------
  def check_event_trigger_here(triggers)
    return false if $game_map.interpreter.running?
    result = false
    for event in $game_map.events_xy(@x.to_i, @y.to_i)
      if triggers.include?(event.trigger) and event.priority_type != 1
        event.start
        result = true if event.starting
      end
    end
    return result
  end
  #------------------------------------------------- -------------------------
  # * Determine if Front Event is Triggered
  #     triggers : Trigger array
  #------------------------------------------------- -------------------------
  def check_event_trigger_there(triggers)
    return false if $game_map.interpreter.running?
    result = false
    front_x = $game_map.x_with_direction(@x.to_i, @direction)
    front_y = $game_map.y_with_direction(@y.to_i, @direction)
    for event in $game_map.events_xy(front_x, front_y)
      if triggers.include?(event.trigger) and event.priority_type == 1
        event.start
        result = true
      end
    end
    if result == false and $game_map.counter?(front_x, front_y)
      front_x = $game_map.x_with_direction(front_x, @direction)
      front_y = $game_map.y_with_direction(front_y, @direction)
      for event in $game_map.events_xy(front_x, front_y)
        if triggers.include?(event.trigger) and event.priority_type == 1
          event.start
          result = true
        end
      end
    end
    return result
  end
end
Je viens d'essayer sur ton projet, ça rend pas mal je trouve. Juste qu'il faudrait que tu règles un peu mieux ton système de collisions, car on peut facilement sortir de la map !

Bref, tu me dis ce que t'en pense, et si il y a un truc à changer, je peux toujours tenter, ou un autre.

King Xtincell
Koruldia Master
Messages : 1192
Localisation : Au centre d'un univers inconstant
Contact :

Message non lu par King Xtincell » mer. juil. 14, 2010 1:14 pm

Rien qu'en regardant (ouais j'ai l'oeil) ca l'air pas mal... Je vais voir le resultat tout a k'heure sur mon pc et je noterai les resultats. Dans l'ensemble, c'est du tres bon boulot. Je te remercie beaucoup. voila qq korulz pour ton travail acharné :D
Image

Raytwo-x
Koruldia Master
Messages : 2041

Message non lu par Raytwo-x » mer. juil. 14, 2010 1:18 pm

Huhu, merci grand king :D

Bien que bon, "travail", c'est surtout repérer les endroits, les isoler, corriger deux trois problèmes qui survenaient quand je supprimais des fonctions inutiles... Mais il m'a fallu du temps pour comprendre ( alors que c'était pas super compliqué en faite >< )

En gros, le personnage se déplace pixel par pixel, exactement dans la lignée des cases de ta map, mais il peut en même temps passer à travers les "cases" vu que c'est du pixel par pixel. Ça permet donc un déplacement plus libre, moins "rpg maker style"

King Xtincell
Koruldia Master
Messages : 1192
Localisation : Au centre d'un univers inconstant
Contact :

Message non lu par King Xtincell » mer. juil. 14, 2010 1:26 pm

C'est justement ce que je recherchais petit scarabée. Les collisions, j'en fais mon affaire. un bon petit script pourri placé au bon endroit et ca devrai le faire Cependant, j'aurai beaucoup de boulot a partir de maintenant pour les charset et les map iso. Ca va etre zoli zoli. Pense a produire un plateau de tableau pour ton perso ca vaut pour tout le monde Pendant ce temps moi j'ai synthetise toutes les info que j'ai sur format, je rend le tout un minimum coherent je stylise et j'organise les sceance de "pixelizing" !

Ca risque d'etre un peu long mais y aura une petite demo graphic-system magic system(?) samedi ou lundi (j'ai fixé une date a titre indicatif, y a des risques pour que ca sorte plus tard ... ou plus tôt :p)
Image

Raytwo-x
Koruldia Master
Messages : 2041

Message non lu par Raytwo-x » mer. juil. 14, 2010 1:40 pm

Pfiouuu, j'ai aucune idée pour un plateau je dois t'avouer... Tu m'en demandes trop la ! ( j'ai pas une imagination débordante, dommage pour moi )

J'imagine bien une zone de ce style :

Image

( ouais, je sais, j'adore trop Soul Eater xD mais le look de la scène est assez bien foutu, ça fais "monde dévasté", mais j'arrive pas à m'en faire un plateau )

King Xtincell
Koruldia Master
Messages : 1192
Localisation : Au centre d'un univers inconstant
Contact :

Message non lu par King Xtincell » mer. juil. 14, 2010 2:16 pm

Je vois le genre. je verrai ce que ca donne in game... je vais voir ce que je pourrai "modeliser"...
edit : Poste moi ca dans la section approprié s'il te plait et dans les regles. Pour que je puisse y voir un peu plus clair.

edit: ok je viens de tester le script. Joli boulot. Les evenements sont affectés, c'est pour ca qu'il y a un probleme je vais redefenir le tableau de positionnement au moment de bosser. Tu as conservé la gestion de l'altitude dans les deplacements ?
Image

Raytwo-x
Koruldia Master
Messages : 2041

Message non lu par Raytwo-x » mer. juil. 21, 2010 6:33 am

Gestion de l'altitude? Je savais même pas qu'il y en avait une, donc je pense pas que je l'ai laissée dedans.. Après tout ,j'ai fais que séparer la partie qui t'intéressait, et arranger le script pour pas qu'il y ait d'erreurs.

King Xtincell
Koruldia Master
Messages : 1192
Localisation : Au centre d'un univers inconstant
Contact :

Message non lu par King Xtincell » mer. juil. 21, 2010 9:46 am

Je vais voir ce que ça donne mais je suis pas sur que tu l'ais conservé mais rassure toi, le modèle final est stable c'est déjà ça (je pense d'ailleurs que c'était cette gestion de l'altitude qui provoquait le bug que j'observait lors de mes essai de stabilisation. Je vous tiens au courant.

bref, le modèle de dessin final es au point, pensez a revisiter les topics de préparations du projet...
Image

Raytwo-x
Koruldia Master
Messages : 2041

Message non lu par Raytwo-x » mer. juil. 21, 2010 1:22 pm

Ha bah tant mieux alors, content d'avoir pu t'aider =)
Ouaip, j'pense aussi qui avait un truc qui gênait avec cette gestion, le perso se décalait quand tu passais au dessus d'un certain point, mais ça le fait plus, donc ça va. :p

Et désolé de répondre si tard, j'avais pas vu que t'avais édité ton post en faites. ><

dricc
Koruldia apprentice
Messages : 1

Message non lu par dricc » ven. août 05, 2011 2:12 pm

Aaaalors , j'arrive un peu aprés la bataille ... (pas assez pour que ce soit un necropost quand meme)
Mais de l'iso , je sais en faire .

Le script qui convient est le GTBS (gubid's tactical battle system) :
http://www.rpgmakervx-fr.com/t8153-gtbs-v15
(rechercher par google si ce site ne vous est pas accessible)
Ici , c'est la version VX mais ça existe pour XP aussi .
Et oui , je sais , le nom a pas l'air d'etre un script iso .
Mais il y a une partie iso inclu dans ce script qui permet non seulement de faire des combats tactiques en iso mais aussi des deplacements normaux .

histoire de montrer que j'affabule pas , un de mes tests avec des ressources custo :
http://www.servimg.com/image_preview.ph ... u=11592352
http://www.servimg.com/image_preview.ph ... u=11592352
Avec ce TileA5 :
http://www.servimg.com/image_preview.ph ... u=11592352

LE gros soucis de ce script : les paralaxes ne bougent pas bien donc le mapping en panorama n'est pas possible .

Giro Noden
Koruldia Divinity
Messages : 4619
Localisation : Lyon
Contact :

Message non lu par Giro Noden » ven. août 05, 2011 2:21 pm

C'est cool d'avoir filé ça ^^ !

Mais tu pourrais peut-être aller te présenter non ? (enfin, c'est toi qui voit, mais t'as l'air d'être quelqu'un d'intéressant, ce serrait cool d'un peu te connaître !)
Et puis te créer un avatar aussi :p
Giro

Avatar de l’utilisateur
KaYsEr
KoruTeam
KoruTeam
Messages : 5151
Localisation : Londres
Contact :

Message non lu par KaYsEr » ven. août 05, 2011 2:33 pm

Tiens salut Dricc :coucou:
Wep jsuis certain que tu peux refaire ton avatar southpark avec notre système aussi !^^!
:dent:
En tout cas merci pour ce taf. :clin:
Image

King Xtincell
Koruldia Master
Messages : 1192
Localisation : Au centre d'un univers inconstant
Contact :

Message non lu par King Xtincell » lun. août 08, 2011 12:36 pm

Je crois qu'on sera amené a bosser ensemble dans un avenir tres proche. Merci pour ta contribution, jeune padawan ^^
Image