Kakashi heroe's
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Kakashi heroe's

Forum du projet Kakashi heroe's
 
AccueilRechercherDernières imagesS'enregistrerConnexion
-28%
Le deal à ne pas rater :
Précommande : Smartphone Google Pixel 8a 5G Double Sim 128Go ...
389 € 539 €
Voir le deal

 

 [Mouvement] Script déplacement pixel par pixel

Aller en bas 
AuteurMessage
Uchiha sasuke
Admin
Uchiha sasuke


Nombre de messages : 63
Date d'inscription : 21/06/2007

[Mouvement] Script déplacement pixel par pixel Empty
MessageSujet: [Mouvement] Script déplacement pixel par pixel   [Mouvement] Script déplacement pixel par pixel Icon_minitimeSam 23 Juin - 20:22

Donc c'est un script de ma création qui marche plus ou moin ^^, il y a quelque bug dans les collisions, on s'arrête avant la fin de la carte d'un côté et on sort un peu de la carte d'un autre ^^

J'ai testé les events, sa marche, touche action, contactes, sa marche comme il faut ^^.

La seul chose à changer dedans est la valeur de VIT, qui vaut 0.125 de base (1/8 ) j'ai testé avec 0.25 sa marche aussi mais je n'ai pas testé d'autre valeur.(Conseille: laissé 0.125)

Donc voici le script ^^
Code:
class Game_Player < Game_Character
  VIT = 0.125
  def check_event_trigger_here(triggers)
    result = false
    if $game_system.map_interpreter.running?
      return result
    end
    for event in $game_map.events.values
      if event.x == (@x+0.5).to_i and event.y == (@y+0.75).to_i and triggers.include?(event.trigger)
        if not event.jumping? and event.over_trigger?
          event.start
          result = true
        end
      end
    end
    return result
  end
  def check_event_trigger_there(triggers)
    result = false
    if $game_system.map_interpreter.running?
      return result
    end
    new_x = (@x+0.5 + (@direction == 6 ? 0.5 : @direction == 4 ? -0.5 : 0)).to_i
    new_y = (@y+0.75 + (@direction == 2 ? 0.5 : @direction == 8 ? -0.5: 0)).to_i
    for event in $game_map.events.values
      if event.x == new_x and event.y == new_y and
        triggers.include?(event.trigger)
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    if result == false
      if $game_map.counter?(new_x, new_y)
        new_x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
        new_y += (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
        for event in $game_map.events.values
          if event.x == new_x and event.y == new_y and
            triggers.include?(event.trigger)
            if not event.jumping? and not event.over_trigger?
              event.start
              result = true
            end
          end
        end
      end
    end
    return result
  end
  def check_event_trigger_touch(x, y)
    result = false
    if $game_system.map_interpreter.running?
      return result
    end
    for event in $game_map.events.values
      if event.x == (x+0.5).to_i and event.y == (y+0.75).to_i and [1,2].include?(event.trigger)
        if not event.jumping? and not event.over_trigger?
          event.start
          result = true
        end
      end
    end
    return result
  end
  def move_down(turn_enabled = true)
    if turn_enabled
      turn_down
    end
    if passable?(@x, @y, 2)
      turn_down
      @y += VIT
      increase_steps
    else
      check_event_trigger_touch(@x, @y+1)
    end
  end
  def move_left(turn_enabled = true)
    if turn_enabled
      turn_left
    end
    if passable?(@x, @y, 4)
      turn_left
      @x -= VIT
      increase_steps
    else
      check_event_trigger_touch(@x-1, @y)
    end
  end
  def move_right(turn_enabled = true)
    if turn_enabled
      turn_right
    end
    if passable?(@x, @y, 6)
      turn_right
      @x +=VIT
      increase_steps
    else
      check_event_trigger_touch(@x+1, @y)
    end
  end
  def move_up(turn_enabled = true)
    if turn_enabled
      turn_up
    end
    if passable?(@x, @y, 8)
      turn_up
      @y -= VIT
      increase_steps
    else
      check_event_trigger_touch(@x, @y-1)
    end
  end
 
 
  def passable?(x, y, d)
    new_x = (x+0.5 + (d == 6 ? 0.5 : d == 4 ? -0.5 : 0))
    new_y = (y+0.75 + (d == 2 ? 0.5 : d == 8 ? -0.5 : 0))
    unless (new_x >= 0 and new_x <= $game_map.width and new_y >= 0 and new_y <= $game_map.height)
      return false
    end
    new_x = new_x.to_i
    new_y = new_y.to_i
    if $DEBUG and Input.press?(Input::CTRL)
      return true
    end
    if @through
      return true
    end
    unless $game_map.passable?((x+0.5).to_i, (y+0.75).to_i, d, self)
      return false
    end
    unless $game_map.passable?(new_x, new_y, 10 - d)
      return false
    end
    for event in $game_map.events.values
      if event.x == new_x and event.y == new_y
        unless event.through
          if self != $game_player
            return false
          end
          if event.character_name != ""
            return false
          end
        end
      end
    end
    return true
  end
end

Vous le mettez audessus de main et c'est bon ^^.
Revenir en haut Aller en bas
https://kakashiheroes.forums-actifs.net
 
[Mouvement] Script déplacement pixel par pixel
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Kakashi heroe's :: Partie RPG :: Scripts-
Sauter vers: