Lune Smooth Camera Slide
Lune Smooth Camera SlideIntroduction
This script will add a much smoother camera slide, making more professional the game, and the move.
Portuguese user? Link Here
Videos
How to Use
Put it above main and configure the script as necessary
Script
Spoiler#=======================================================# Lune Smooth Camera Sliding# Author: Raizen# Comunity: www.centrorpg.com# The scripts allow a much smoother movement, making the move much more realistic.#=======================================================module Lune_cam_slide# Constant of the slide, the greater the faster, the lower the slower..(default = 0.001)Slide = 0.001 # To set the camera focus on an event instead of a player# Script Call: set_camera_focus(id)# where id is the id of the event, to put back the focus on the player,# id = 0 end #==============================================================================# ** Game_Player#------------------------------------------------------------------------------# Esta classe gerencia o jogador. # A instância desta classe é referenciada por $game_player.#============================================================================== class Game_Player < Game_Characteralias :lune_camera_slide_initialize :initialize #-------------------------------------------------------------------------- # * Inicialização do objeto #-------------------------------------------------------------------------- def initialize(*args) @camera_slide_focus = 0 lune_camera_slide_initialize(*args) end #-------------------------------------------------------------------------- # * Atualização da rolagem # last_real_x : ultima coordenada X real # last_real_y : ultima coordenada Y real #-------------------------------------------------------------------------- def update_scroll(last_real_x, last_real_y) return if $game_map.scrolling? if @camera_slide_focus == 0 screen_focus_x = screen_x screen_focus_y = screen_y else screen_focus_x = $game_map.events[@camera_slide_focus].screen_x screen_focus_y = $game_map.events[@camera_slide_focus].screen_y end sc_x = (screen_focus_x - Graphics.width/2).abs sc_y = (screen_focus_y - 16 - Graphics.height/2).abs $game_map.scroll_down(Lune_cam_slide::Slide*sc_y) if screen_focus_y - 16 > Graphics.height/2 $game_map.scroll_left(Lune_cam_slide::Slide*sc_x) if screen_focus_x < Graphics.width/2 $game_map.scroll_right(Lune_cam_slide::Slide*sc_x) if screen_focus_x > Graphics.width/2 $game_map.scroll_up(Lune_cam_slide::Slide*sc_y) if screen_focus_y - 16 < Graphics.height/2 end def set_camera_focus(event = 0) @camera_slide_focus = event endend #==============================================================================# ** Spriteset_Map#------------------------------------------------------------------------------# Esta classe reune os sprites da tela de mapa e tilesets. Esta classe é# usada internamente pela classe Scene_Map. #============================================================================== class Spriteset_Map #-------------------------------------------------------------------------- # * Atualização do tilemap #-------------------------------------------------------------------------- def update_tilemap @tilemap.map_data = $game_map.data @tilemap.ox = ($game_map.display_x * 32) @tilemap.oy = ($game_map.display_y * 32) @tilemap.ox += 1 if $game_map.adjust_tile_slide_x @tilemap.oy += 1 if $game_map.adjust_tile_slide_y @tilemap.update endend#==============================================================================# ** Game_Map#------------------------------------------------------------------------------# Esta classe gerencia o mapa. Inclui funções de rolagem e definição de # passagens. A instância desta classe é referenciada por $game_map.#============================================================================== class Game_Map #-------------------------------------------------------------------------- # * Variáveis públicas #-------------------------------------------------------------------------- def adjust_tile_slide_x @display_x != 0 && @display_x != (@map.width - screen_tile_x) && !scrolling? end def adjust_tile_slide_y @display_y != 0 && @display_y != (@map.height - screen_tile_y) && !scrolling? endend#==============================================================================# ** Game_Interpreter#------------------------------------------------------------------------------# Um interpretador para executar os comandos de evento. Esta classe é usada# internamente pelas classes Game_Map, Game_Troop e Game_Event.#============================================================================== class Game_Interpreter def set_camera_focus(event = 0) $game_player.set_camera_focus(event) endend
FAQ
Why my character is not showing on the screen?
Don't use values way lower then 0.001, or way higher, the lower the cam moves slower, so to catch up is really hard.
Credit and Thanks
- Raizen
本贴来自国际rpgmaker官方论坛作者:Raizen处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/lune-smooth-camera-slide.10447/
页:
[1]