じ☆ve冰风 发表于 2026-8-5 15:30:56

Lune Smooth Camera Slide

Lune Smooth Camera Slide

Introduction

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]
查看完整版本: Lune Smooth Camera Slide