Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o tema • Voltar para a ficha do tema
MS - Parallax Mapping
5 participantes
Aldeia RPG :: RPG Maker :: RPG Maker VX Ace :: Scripts
Página 1 de 1
MS - Parallax Mapping
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:
É óbvio que o mapa do Galv não foi feito usando meu script, mas é bem possível recriar esse mapa usando ele
Script
Créditos
Masked
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:
É ó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
Créditos
Masked
Re: MS - Parallax Mapping
Oque aconteceu com masked? morreu kkkk
irei estudar esse sistema
irei estudar esse sistema
Kies- Diva
- Mensagens : 1155
Créditos : 124
Ficha do personagem
Nível: 1
Experiência:
(0/0)
Vida:
(30/30)
PoxaFiih- Novato
- Mensagens : 22
Créditos : 2
Ficha do personagem
Nível: 1
Experiência:
(0/0)
Vida:
(30/30)
Re: MS - Parallax Mapping
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)
OFWGKTA- Experiente
- Mensagens : 408
Créditos : 27
Ficha do personagem
Nível: 1
Experiência:
(5/50)
Vida:
(30/30)
Re: MS - Parallax Mapping
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- Novato
- Mensagens : 22
Créditos : 2
Ficha do personagem
Nível: 1
Experiência:
(0/0)
Vida:
(30/30)
Tópicos semelhantes
» Praticando parallax mapping
» Tutorial de Paralaxx Mapping do Kazuyashi
» Parallax . Zero
» Parallax Fix
» 1º Parallax Map
» Tutorial de Paralaxx Mapping do Kazuyashi
» Parallax . Zero
» Parallax Fix
» 1º Parallax Map
Aldeia RPG :: RPG Maker :: RPG Maker VX Ace :: Scripts
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos