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 6310
16 그래픽 Drago - Custom Resolution II 1 Alkaid 2014.09.10 1019
15 그래픽 [XP/VX/VXA] Drago - Transition Pack Alkaid 2014.02.13 1219
14 그래픽 WhiteFlute - BitmapEX 4 file JACKY 2012.12.10 2957
» 그래픽 부드럽게 화면이 움직이는 스크립트 입니다. 16 GangSin 2012.09.12 4609
12 그래픽 Pictures below Characters by PK8 (XP/VXA) Alkaid 2012.09.07 1644
11 그래픽 Event Transparency by DerVVulfman (XP/VX/VXA) Alkaid 2012.09.01 1489
10 그래픽 Composite Window Skins by PK8 (XP/VX/VXA) Alkaid 2012.08.26 1563
9 그래픽 Meagan's Particles 1.1 by DerVVulfman 3 Alkaid 2011.11.01 2212
8 그래픽 Transition Pack 1.11 by Fantasist Alkaid 2011.01.22 2045
7 그래픽 Weather Creator 1.0 by ForeverZer0 2 file Alkaid 2011.01.22 1924
6 그래픽 MAWS: Modified Advanced Weather Script 1.2 by Agckuu Coceg 2 file Alkaid 2010.09.13 1969
5 그래픽 Weather Script(버전 불명) by ccoa 1 file Alkaid 2010.09.08 1574
4 그래픽 화면을 부드럽게 해주는스크립트[ 아주 유용] 56 file - 하늘 - 2009.08.05 6571
3 그래픽 [AWS- Advanced Weather System] 이름그대로 강화된 날씨시스템. 11 file 제로스S2 2009.08.02 3993
2 그래픽 Bitmap update 2.0 by Linkin_T 1 백호 2009.02.22 986
1 그래픽 [자작]Bitmap에서 줄긋기, 네모그리기 6 나뚜루 2009.01.24 1855
Board Pagination Prev 1 Next
/ 1