MS - Parallax Mapping Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

MS - Parallax Mapping

5 participantes

Ir para baixo

MS - Parallax Mapping Empty MS - Parallax Mapping

Mensagem por Valentine Ter maio 22, 2018 1:15 pm

Introdução
Eu já vi alguns scripts de mapeamento por parallax (ou overlay, sei lá...) por aí, e achei a ideia bem interessante, além disso, já vi mapas incríveis feitos usando essa técnica, aí, decidi criar um script para facilitar a aplicação desse tipo de técnica no jogo

Características
O script permite, claro, o mapeamento por parallax, ele permite que se crie quantas camadas forem necessárias, definir se a camada ficará acima ou abaixo do player, qual a prioridade dela em relação às outras e também definir uma switch para mostrar/esconder a camada, quase tudo é opcional no script, assim não é necessário criar imagens em branco e afins.

Instruções
No script, nos comentários em verde

Screenshots
Como não sou bom mapper, e não vi outra forma de mostrar as possibilidades do script, peguei um mapa do projeto Pirate Rush, do Galv, para dar exemplo, mas vale ressaltar que não fui eu que fiz o mapa:
MS - Parallax Mapping Parallax-map-lost-woods2
É óbvio que o mapa do Galv não foi feito usando meu script, mas é bem possível recriar esse mapa usando ele

Script
Código:
#==============================================================================
# MS - Parallax Mapping
#------------------------------------------------------------------------------
# por Masked
#==============================================================================
#==============================================================================
# Instruções
#------------------------------------------------------------------------------
# Primeiro, crie uma pasta 'Overlay' (sem aspas) dentro da pasta 'Graphics' do
# seu projeto, depois, crie as camadas do mapa usando um programa de edição de
# imagem com suporte para transparência, e ponha o arquivo na pasta que você
# criou, o nome do arquivo deve ser 'Map00X_sufixo' (sem aspas), ou seja, a
# camada '_ground' (layer1) do mapa de número 1 deve ter um arquivo com nome
# 'Map001_ground' na pasta.
#==============================================================================
($imported ||= {})[:ms_parallax] = true
#==============================================================================
# Configurações
#==============================================================================
module MS_ParallaxMapping
  
  #--------------------------------------------------------------------------
  # Configurações das camadas
  #--------------------------------------------------------------------------
  # Para criar novas camadas, basta adicionar um novo item à lista de
  # camadas, o item deve seguir o modelo:
  # nome_da_camada: ["_sufixo","down/up",z]
  # no caso, o nome_da_camada pode ser qualquer um, o sufixo também, o
  # down/up significa que pode ser down ou up, down fará a imagem ficar
  # abaixo do jogador e up fará ela ficar acima, caso esse item fuja do
  # padrão proposto, será assumido o valor como "up".
  # O z é opcional, e define a prioridade de cada camada, uma camada com z 1
  # fica acima de outra com z 0
  #--------------------------------------------------------------------------
  Layers = {
    layer1: ["_ground","down"],
    layer11: ["_ground2","down",50],
    layer2: ["_overlay","up"],
  }
  
  #--------------------------------------------------------------------------
  # Configurações das switches
  #--------------------------------------------------------------------------
  # As switches são as switches que fazem as camadas aparecerem ou não, se
  # a switch estiver ligada, a camada aparece.
  #
  # A switch deve ser configurada para a respectiva camada, com o mesmo nome
  # usado na 'Layers', da configuração das camadas, para definir a switch,
  # apenas ponha o ID dela depois do nome da camda
  #--------------------------------------------------------------------------
  Switches = {
    layer1: 1,
    layer11: 1,
    layer2: 2,
  }
  
end
#==============================================================================
# Fim das Configurações
#==============================================================================
#==============================================================================
# ** Spriteset_Map
#==============================================================================
class Spriteset_Map
  
  attr_accessor :layers
  
  alias ms_initlz initialize
  alias ms_updt update
  alias ms_crtvwprts create_viewports
  alias ms_updvwprts update_viewports
  
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize
    create_viewports
    create_tilemap
    create_parallax
    create_characters
    create_shadow
    create_weather
    create_pictures
    create_timer
    create_layers
    update
  end
  #--------------------------------------------------------------------------
  # * Criação do viewport
  #--------------------------------------------------------------------------
  def create_viewports
    ms_crtvwprts
    @viewport0 = Viewport.new
    @viewport_down = Viewport.new
    @viewport_up = Viewport.new
    @viewport0.z = -50
    @viewport_down.z = -10
    @viewport_up.z = 150
  end
  #--------------------------------------------------------------------------
  # * Criação do tilemap
  #--------------------------------------------------------------------------
  def create_tilemap
    @tilemap = Tilemap.new(@viewport0)
    @tilemap.map_data = $game_map.data
    load_tileset
  end
  #--------------------------------------------------------------------------
  # * Criação das camadas de imagens do mapa
  #--------------------------------------------------------------------------
  def create_layers
    
    @layers = {}
    
    MS_ParallaxMapping::Layers.each {|layer|
          
      @layers[layer[0]] = Sprite.new(layer[1][1] == "down" ? @viewport_down : @viewport_up)
      @layers[layer[0]].z = layer[1][2] unless layer[1][2].nil?
      @layers[layer[0]].bitmap = Cache.overlay(sprintf("Map%03d",$game_map.map_id) + layer[1][0])
      
    }
    
  end
  #--------------------------------------------------------------------------
  # * Atualização da tela
  #--------------------------------------------------------------------------
  def update
    ms_updt
    update_layers
  end
  #--------------------------------------------------------------------------
  # * Atualização das camadas
  #--------------------------------------------------------------------------
  def update_layers
    MS_ParallaxMapping::Layers.each {|layer|
      @layers[layer[0]].visible = MS_ParallaxMapping::Switches[layer[0]] ? $game_switches[MS_ParallaxMapping::Switches[layer[0]]] : true
      @layers[layer[0]].ox = $game_map.display_x*32
      @layers[layer[0]].oy = $game_map.display_y*32
    }
  end
  #--------------------------------------------------------------------------
  # * Atualização dos viewports
  #--------------------------------------------------------------------------
  def update_viewports
    ms_updvwprts
    
    @viewport0.ox = $game_map.screen.shake
    @viewport_down.ox = $game_map.screen.shake
    @viewport_up.ox = $game_map.screen.shake
    
    @viewport0.update
    @viewport_down.update
    @viewport_up.update
    
  end
end
#==============================================================================
# ** Cache
#==============================================================================
module Cache
  #--------------------------------------------------------------------------
  # * Carregamento dos gráficos de overlay
  #--------------------------------------------------------------------------
  def self.overlay(filename)
    
    exists = false
    
    Dir.entries("Graphics/Overlay/").each {|file|
      if file =~ /#{filename}\.[[:ascii:]]*/
        exists = true
        break
      end
    }
    
    exists ? load_bitmap("Graphics/Overlay/",filename) : empty_bitmap
  end
end
Cole acima do main

Créditos
Masked
Valentine
Valentine
Administrador
Administrador

Medalhas : MS - Parallax Mapping ZgLkiRU
Mensagens : 5343
Créditos : 1164

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

MS - Parallax Mapping Empty Re: MS - Parallax Mapping

Mensagem por Kies Qui maio 24, 2018 11:40 am

Oque aconteceu com masked? morreu kkkk

irei estudar esse sistema
Kies
Kies
Diva
Diva

Mensagens : 1155
Créditos : 124

Ficha do personagem
Nível: 1
Experiência:
MS - Parallax Mapping Left_bar_bleue0/0MS - Parallax Mapping Empty_bar_bleue  (0/0)
Vida:
MS - Parallax Mapping Left_bar_bleue30/30MS - Parallax Mapping Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

MS - Parallax Mapping Empty Re: MS - Parallax Mapping

Mensagem por PoxaFiih Qui Dez 27, 2018 3:13 pm

MS - Parallax Mapping Erro10
Boa tarde! Ao colocar este script no VXA-OS apresentou este erro... 
Ele não é compatível com o sistema?
PoxaFiih
PoxaFiih
Novato
Novato

Mensagens : 22
Créditos : 2

Ficha do personagem
Nível: 1
Experiência:
MS - Parallax Mapping Left_bar_bleue0/0MS - Parallax Mapping Empty_bar_bleue  (0/0)
Vida:
MS - Parallax Mapping Left_bar_bleue30/30MS - Parallax Mapping Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

MS - Parallax Mapping Empty Re: MS - Parallax Mapping

Mensagem por Valentine Qui Dez 27, 2018 10:34 pm

Ainda não testei no VXA-OS, mas vou verificar a compatibilidade.
Valentine
Valentine
Administrador
Administrador

Medalhas : MS - Parallax Mapping ZgLkiRU
Mensagens : 5343
Créditos : 1164

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

MS - Parallax Mapping Empty Re: MS - Parallax Mapping

Mensagem por Valentine Sex Dez 28, 2018 5:34 pm

Fiz uma modificação no script para adaptá-lo ao VXA-OS:

Código:
#==============================================================================
# MS - Parallax Mapping
#------------------------------------------------------------------------------
# por Masked
#==============================================================================
#==============================================================================
# Instruções
#------------------------------------------------------------------------------
# Primeiro, crie uma pasta 'Overlay' (sem aspas) dentro da pasta 'Graphics' do
# seu projeto, depois, crie as camadas do mapa usando um programa de edição de
# imagem com suporte para transparência, e ponha o arquivo na pasta que você
# criou, o nome do arquivo deve ser 'Map00X_sufixo' (sem aspas), ou seja, a
# camada '_ground' (layer1) do mapa de número 1 deve ter um arquivo com nome
# 'Map001_ground' na pasta.
#==============================================================================
($imported ||= {})[:ms_parallax] = true
#==============================================================================
# Configurações
#==============================================================================
module MS_ParallaxMapping
  
  #--------------------------------------------------------------------------
  # Configurações das camadas
  #--------------------------------------------------------------------------
  # Para criar novas camadas, basta adicionar um novo item à lista de
  # camadas, o item deve seguir o modelo:
  # nome_da_camada: ["_sufixo","down/up",z]
  # no caso, o nome_da_camada pode ser qualquer um, o sufixo também, o
  # down/up significa que pode ser down ou up, down fará a imagem ficar
  # abaixo do jogador e up fará ela ficar acima, caso esse item fuja do
  # padrão proposto, será assumido o valor como "up".
  # O z é opcional, e define a prioridade de cada camada, uma camada com z 1
  # fica acima de outra com z 0
  #--------------------------------------------------------------------------
  Layers = {
    layer1: ["_ground","down"],
    layer11: ["_ground2","down",50],
    layer2: ["_overlay","up"],
  }
  
  #--------------------------------------------------------------------------
  # Configurações das switches
  #--------------------------------------------------------------------------
  # As switches são as switches que fazem as camadas aparecerem ou não, se
  # a switch estiver ligada, a camada aparece.
  #
  # A switch deve ser configurada para a respectiva camada, com o mesmo nome
  # usado na 'Layers', da configuração das camadas, para definir a switch,
  # apenas ponha o ID dela depois do nome da camda
  #--------------------------------------------------------------------------
  Switches = {
    layer1: 1,
    layer11: 1,
    layer2: 2,
  }
  
end
#==============================================================================
# Fim das Configurações
#==============================================================================
#==============================================================================
# ** Spriteset_Map
#==============================================================================
class Spriteset_Map
  
  attr_accessor :layers
  
  alias ms_initlz initialize
  alias ms_updt update
  alias ms_crtvwprts create_viewports
  alias ms_updvwprts update_viewports
  
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize
    create_viewports
    create_tilemap
    create_parallax
    create_characters
    create_shadow
    create_weather
    create_pictures
    create_timer
    create_layers
    update
  end
  #--------------------------------------------------------------------------
  # * Criação do viewport
  #--------------------------------------------------------------------------
  def create_viewports
    ms_crtvwprts
    @viewport0 = Viewport.new
    @viewport_down = Viewport.new
    @viewport_up = Viewport.new
    @viewport0.z = -50
    @viewport_down.z = -10
    @viewport_up.z = 150
  end
  #--------------------------------------------------------------------------
  # * Criação do tilemap
  #--------------------------------------------------------------------------
  def create_tilemap
    @tilemap = Tilemap.new(@viewport0)
    @tilemap.map_data = $game_map.data
    load_tileset
  end
  #--------------------------------------------------------------------------
  # * Criação das camadas de imagens do mapa
  #--------------------------------------------------------------------------
  def create_layers
    
    @layers = {}
    
    MS_ParallaxMapping::Layers.each {|layer|
          
      @layers[layer[0]] = Sprite.new(layer[1][1] == "down" ? @viewport_down : @viewport_up)
      @layers[layer[0]].z = layer[1][2] unless layer[1][2].nil?
      @layers[layer[0]].bitmap = Cache.overlay(sprintf("Map%03d",$game_map.map_id) + layer[1][0])
      
    }
    
  end
  #--------------------------------------------------------------------------
  # * Atualização da tela
  #--------------------------------------------------------------------------
  def update
    ms_updt
    update_layers
  end
  #--------------------------------------------------------------------------
  # * Atualização das camadas
  #--------------------------------------------------------------------------
  def update_layers
    MS_ParallaxMapping::Layers.each {|layer|
      @layers[layer[0]].visible = MS_ParallaxMapping::Switches[layer[0]] ? $game_switches[MS_ParallaxMapping::Switches[layer[0]]] : true
      @layers[layer[0]].ox = $game_map.display_x*32
      @layers[layer[0]].oy = $game_map.display_y*32
    }
  end
  #--------------------------------------------------------------------------
  # * Atualização dos viewports
  #--------------------------------------------------------------------------
  def update_viewports
    ms_updvwprts
    
    @viewport0.ox = $game_map.screen.shake
    @viewport_down.ox = $game_map.screen.shake
    @viewport_up.ox = $game_map.screen.shake
    
    @viewport0.update
    @viewport_down.update
    @viewport_up.update
    
  end
end
#==============================================================================
# ** Cache
#==============================================================================
module Cache
  #--------------------------------------------------------------------------
  # * Carregamento dos gráficos de overlay
  #--------------------------------------------------------------------------
  def self.overlay(filename)
    
    exists = false
    
    Dir.entries("Graphics/Overlay/").each {|file|
      if file =~ /#{filename}\.[[:ascii:]]*/
        exists = true
        break
      end
    }
    
    exists ? load_bitmap("Graphics/Overlay/",filename) : empty_bitmap
  end
end


Última edição por Valentine em Sex Mar 12, 2021 7:18 pm, editado 1 vez(es)
Valentine
Valentine
Administrador
Administrador

Medalhas : MS - Parallax Mapping ZgLkiRU
Mensagens : 5343
Créditos : 1164

https://www.aldeiarpg.com/

Ir para o topo Ir para baixo

MS - Parallax Mapping Empty Re: MS - Parallax Mapping

Mensagem por OFWGKTA Sex Dez 28, 2018 8:19 pm

Obra de arte

_________________
MS - Parallax Mapping 112898
EVANGELION 
OFWGKTA
OFWGKTA
Experiente
Experiente

Mensagens : 408
Créditos : 27

Ficha do personagem
Nível: 1
Experiência:
MS - Parallax Mapping Left_bar_bleue5/50MS - Parallax Mapping Empty_bar_bleue  (5/50)
Vida:
MS - Parallax Mapping Left_bar_bleue30/30MS - Parallax Mapping Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

MS - Parallax Mapping Empty Re: MS - Parallax Mapping

Mensagem por PoxaFiih Sáb Dez 29, 2018 12:39 pm

MS - Parallax Mapping Parall10
Olá! Este sistema é muito bom, porém ainda utilizo um antigo que tenho por familiaridade, mas encontrei um bug... 

Ao criar um mapa como _ground e outro _overlay e utilizálos no VXA-OS, o _overlay, por ficar a frente do player, ele também está ficando à frente da HUD... Como as hotkeys, chat, botões e informações do personagem... 

Não manjo muito de script, mas é possivel corrigir pelo próprio mapemanto do RPG Maker, isto criando um tileset com as partes que são "overlay" e mapear por cima do parallax. 

(Para que não tenha erros ao mapear, ao abrir informação do mapa, adicione o parallax e ative a função ver no editor. Ao terminar a edição, tire o parallax das informações pois o script já insere o background.)

Por sua vez, caso vá utilizar overlay como efeito de luz com opacidade dá um resultado legal, mesmo escurecendo um pouco a HUD.
PoxaFiih
PoxaFiih
Novato
Novato

Mensagens : 22
Créditos : 2

Ficha do personagem
Nível: 1
Experiência:
MS - Parallax Mapping Left_bar_bleue0/0MS - Parallax Mapping Empty_bar_bleue  (0/0)
Vida:
MS - Parallax Mapping Left_bar_bleue30/30MS - Parallax Mapping Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

MS - Parallax Mapping Empty Re: MS - Parallax Mapping

Mensagem por Haseo Dom Out 13, 2019 1:33 am

MS - Parallax Mapping Erro11
O meu Deu esse erro, coloquei certinho e peguei o script adaptavel pro VXA-OS!
Haseo
Haseo
Ocasional
Ocasional

Mensagens : 172
Créditos : 4

Ir para o topo Ir para baixo

MS - Parallax Mapping Empty Re: MS - Parallax Mapping

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos