XP 스크립트

#==============================================================================
# ★ 촬영 기술 var 1.0 (07.2.12)  by shun 번역: 인간(jty1025)
#------------------------------------------------------------------------------
#   맵 화면에서 스크롤을 카메라풍으로 늦추거나
#   플레이어와는 독립시켜 스크롤 시키거나 할 수 있습니다.
#==============================================================================

module SIMP
  #--------------------------------------------------------------------------
  # ○ 설정
  #--------------------------------------------------------------------------
  #
  # 스크롤 속도

  #
  CAMERA_MIN_SPEED = 1            # 최저한의 스크롤 속도
  CAMERA_DELEY = 2                # 속도 보정 (값이 큰 만큼 늦는다)
  #
  # 독립 스크롤
  #
  CAMERA_SCROLL_SWITCH = 48       # 스크롤 금지 스위치의 번호
  CAMERA_SCROLL_KEY = Input::A    # 스크롤을 개시하는 버튼 (Input::<버튼>)
  CAMERA_SCROLL_SPEED = 5        # 스크롤 하는 기본 속도
  CAMERA_SCROLL_DIR8 = true       # 8 방향 입력
end

class Game_Map
  #--------------------------------------------------------------------------
  # ● 공개 인스턴스 변수
  #--------------------------------------------------------------------------
  attr_writer   :real_display_x           # X 좌표 (실좌표)
  attr_writer   :real_display_y           # Y 좌표 (실좌표)
  #--------------------------------------------------------------------------
  # ● 오브젝트 초기화
  #--------------------------------------------------------------------------
  alias camera_initialize initialize
  def initialize
    camera_initialize
    @real_display_x = 0
    @real_display_y = 0
  end
  #--------------------------------------------------------------------------
  # ● 셋업
  #     map_id : 맵 ID
  #--------------------------------------------------------------------------
  alias camera_setup setup
  def setup(map_id)
    camera_setup(map_id)
    @real_display_x = 0
    @real_display_y = 0
  end
  #--------------------------------------------------------------------------
  # ● 표시 X 좌표 * 128
  #--------------------------------------------------------------------------
  def display_x
    return @real_display_x
  end
  #--------------------------------------------------------------------------
  # ● 표시 Y 좌표 * 128
  #--------------------------------------------------------------------------
  def display_y
    return @real_display_y
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  alias camera_update update
  def update
    camera_update
    dx = @display_x - @real_display_x
    unless dx == 0
      speed = get_speed(dx.abs)
      distance = 2 ** speed
      if dx > 0
        @real_display_x = [@real_display_x + distance, @display_x].min
      else
        @real_display_x = [@real_display_x - distance, @display_x].max
      end
    end
    dy = @display_y - @real_display_y
    unless dy == 0
      speed = get_speed(dy.abs)
      distance = 2 ** speed
      if dy > 0
        @real_display_y = [@real_display_y + distance, @display_y].min
      else
        @real_display_y = [@real_display_y - distance, @display_y].max
      end
    end
  end
  #--------------------------------------------------------------------------
  # ○ 스크롤 속도를 취득

  #     distance : 움직이는 목표까지의 거리

  #--------------------------------------------------------------------------
  def get_speed(distance)
    return [SIMP::CAMERA_MIN_SPEED, distance / 32 - SIMP::CAMERA_DELEY].max
  end
end

class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  alias camera_update update
  def update
    # 이동중, 이벤트 실행중, 이동 루트 강제중,
    # 메세지 윈도우 표시중의 머지않아도 아닌 경우

    unless moving? or $game_system.map_interpreter.running? or
           @move_route_forcing or $game_temp.message_window_showing
      # 스크롤 키가 밀렸을 경우, 독립 스크롤 플래그를 유효하게 한다

      if Input.trigger?(SIMP::CAMERA_SCROLL_KEY) and @scroll != true and
         $game_switches[SIMP::CAMERA_SCROLL_SWITCH] != true
        # 결정 SE 를 연주

        $game_system.se_play($data_system.decision_se)
        @scroll = true
        Input.update
      end
    end
    # 독립 스크롤중의 경우
    if @scroll
      super
      update_scroll
    else
      camera_update
    end
  end
  #--------------------------------------------------------------------------
  # ○ 프레임 갱신 (독립 스크롤)
  #--------------------------------------------------------------------------
  def update_scroll
    # 스크롤 키가 밀렸을 경우
    if Input.trigger?(SIMP::CAMERA_SCROLL_KEY)
      # 캔슬 SE 를 연주
      $game_system.se_play($data_system.cancel_se)
      # 플레이어에 화면을 되돌린다
      center(@x, @y)
      # 독립 스크롤 플래그를 무효로 한다
      @scroll = false
      return
    end
    distance = 2 ** SIMP::CAMERA_SCROLL_SPEED
    # 방향 버튼이 밀리고 있으면, 그 방향에 스크롤
    dir = (SIMP::CAMERA_SCROLL_DIR8 ? Input.dir8 : Input.dir4)
    case dir
    when 1
      $game_map.scroll_down(distance)
      $game_map.scroll_left(distance)
    when 2
      $game_map.scroll_down(distance)
    when 3
      $game_map.scroll_down(distance)
      $game_map.scroll_right(distance)
    when 4
      $game_map.scroll_left(distance)
    when 6
      $game_map.scroll_right(distance)
    when 7
      $game_map.scroll_left(distance)
      $game_map.scroll_up(distance)
    when 8
      $game_map.scroll_up(distance)
    when 9
      $game_map.scroll_right(distance)
      $game_map.scroll_up(distance)
    end
  end
  #--------------------------------------------------------------------------
  # ● 화면 중앙에 오도록(듯이) 맵의 표시 위치를 설정
  #--------------------------------------------------------------------------
  alias camera_center center
  def center(x, y)
    camera_center(x, y)
    $game_map.real_display_x = $game_map.display_x
    $game_map.real_display_y = $game_map.display_y
  end
end

  #--------------------------------------------------------------------------

Comment '16'
  • profile
    푸솜양 2012.09.18 19:28
    오오오.. 진짜 좋네요 부드럽게 움직이는게 자연스럽고 보기 좋아요~
    잘 쓸게요 감사합니다!
  • profile
    빈군 2012.09.24 18:26

    우와.. 감사합니다 이렇게 좋아질줄 상상도 못햇어요

  • ?
    콰르 2012.11.05 13:57
    엄청 부드럽게 움직이네요. 감사합니다.
  • profile
    gee드래곤 2012.11.17 15:55
    써봤는데 괜찮네요
  • ?
    이알라 2012.12.06 11:03
    정말 좋은 스크립트 감사드립니다.
    아주 매끄럽게 진행이 되네요!
  • ?
    기림 2013.03.09 14:03
    우와 고맙습니다
    엄청고퀄이다
  • ?
    생파 2013.03.30 20:11
    와, 정말 유용한 스크립트네요.
  • ?
    알피지에엑스피 2013.07.24 15:14
    감사여!
  • ?
    R피쥐 2013.08.30 23:49
    부드럽게 움직여서 편하네요 감사합니다.
  • ?
    AVANGS주니 2013.10.11 19:24
    감사합니다! 잘쓸꼐요!~!
  • ?
    카스라이트 2013.12.15 14:08
    전왜안될까요.. ㅠ
  • profile
    ☆쭈딘★ 2013.12.22 09:32
    스크립트를 제대로 입력 하신거 맞으신지...
    제대로 입력을 안하면 자동으로 되지 않습니다.
  • ?
    카스라이트 2014.05.24 03:52

    다른거랑 겹쳐서 그런가봐요.. 뭐랑겹쳤으려나 ㅠㅠ 하고싶은데아쉽네요

     

    새게임누르고 적용하면되긴하는데.. ㅠ.ㅠ 왜안되는거지

  • profile
    아방스닉넴 2014.11.23 01:50
    와 부드럽네요!!
  • ?
    hcop12 2015.01.27 20:04
    복붙했는데 왜안될까요?
  • ?
    금향꽃 2015.09.24 21:26
    오류가 뜨네요ㅠㅠ
    Erro no Script , em 46 na linha 'Nameover'
    undefined method 'setup' for class 'Game_Map'
    이라고 뜨는데.. 뭐가 문제인 걸까요ㅠㅠ

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6312
981 오디오 WhiteFlute - AudioEX (XP/VX/VXA) file Alkaid 2012.12.26 1260
980 그래픽 WhiteFlute - BitmapEX 4 file JACKY 2012.12.10 2957
979 오디오 Audio Module Rewrite mciSendString 1.1 by DerVVulfman Alkaid 2012.09.18 1373
978 전투 Trickster씨의 전투 시스템 (SDK 필수?) Alkaid 2012.09.18 3264
977 스킬 Trickster's Bag of Skill Effects (SDK 필요) Alkaid 2012.09.17 1292
976 변수/스위치 Switchless Common Events by PK8(XP/VX/VXA) Alkaid 2012.09.15 1203
975 변수/스위치 Initial Switches and Variables by PK8 (XP/VX/VXA) Alkaid 2012.09.14 1299
974 변수/스위치 The Self Data Suite by PK8 (XP/VX/VXA) Alkaid 2012.09.14 1243
» 그래픽 부드럽게 화면이 움직이는 스크립트 입니다. 16 GangSin 2012.09.12 4609
972 맵/타일 Editor Tiles by PK8 (XP/VX/VXA) Alkaid 2012.09.11 1869
971 장비 Auto Equipment Optimization for Guillaume777's Multi Slot Script by DerVVulfman Alkaid 2012.09.09 1499
970 메뉴 Leidy's Ring Command Window 1.2 by DerVVulfman Alkaid 2012.09.09 1435
969 그래픽 Pictures below Characters by PK8 (XP/VXA) Alkaid 2012.09.07 1644
968 그래픽 Event Transparency by DerVVulfman (XP/VX/VXA) Alkaid 2012.09.01 1489
967 전투 Etude87_Custom_Slip_Damage_XP ver.1.0 5 습작 2012.08.26 1857
966 전투 Mr.Mo's ABS Ultimate 7.0 by DerVVulfman 4 Alkaid 2012.08.26 2589
965 그래픽 Composite Window Skins by PK8 (XP/VX/VXA) Alkaid 2012.08.26 1563
964 스킬 Miriam's Handicrafts! 1.3 by DerVVulfman Alkaid 2012.08.26 1208
963 전투 Minkoff's Animated Battlers - Enhanced 13.8 by DerVVulfman 1 Alkaid 2012.08.26 1833
962 메뉴 메뉴를 바꾸는 스크립트 14 №1 2012.08.04 4228
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 52 Next
/ 52