Project1

标题: 《一起来做ARPG》之三《地图行走范围扩展》 [打印本页]

作者: 美兽    时间: 2008-10-14 06:34
标题: 《一起来做ARPG》之三《地图行走范围扩展》
虽然已修改视口为640 * 480,但实际行走范围仍是遵循544 * 412尺寸的17 * 13,让我们改成20 * 15。

Game_Player类:

  CENTER_X = (Standrad::SCREEN_WIDTH / 2 - 16) * 8     # 画面中央的 X 坐标 * 8
  CENTER_Y = (Standrad::SCREEN_HEIGHT / 2 - 16) * 8     # 画面中央的 Y 坐标 * 8

  #--------------------------------------------------------------------------
  # ● 设置画面中央的显示坐标
  #     x : X 坐标
  #     y : Y 坐标
  #--------------------------------------------------------------------------
  def center(x, y)
    display_x = x * 256 - CENTER_X                    # 计算坐标
    unless $game_map.loop_horizontal?                 # 不能横向滚动?
      max_x = ($game_map.width - 20) * 256            # 计算最大值
      display_x = [0, [display_x, max_x].min].max     # 修正坐标
    end
    display_y = y * 256 - CENTER_Y                    # 计算坐标
    unless $game_map.loop_vertical?                   # 不能纵向滚动?
      max_y = ($game_map.height - 15) * 256           # 计算最大值
      display_y = [0, [display_y, max_y].min].max     # 修正坐标
    end
    $game_map.set_display_pos(display_x, display_y)   # 更改显示位置
  end
Game_Map类:

  #--------------------------------------------------------------------------
  # ● 滚动设置
  #--------------------------------------------------------------------------
  def setup_scroll
    @scroll_direction = 2
    @scroll_rest = 0
    @scroll_speed = 4
    @margin_x = (width - 20) * 256 / 2      # 画面不显示部分横向 / 2
    @margin_y = (height - 15) * 256 / 2     # 画面不显示部分纵向 / 2
  end

  #--------------------------------------------------------------------------
  # ● 计算显示远景的 X 坐标
  #     bitmap : 远景位图
  #--------------------------------------------------------------------------
  def calc_parallax_x(bitmap)
    if bitmap == nil
      return 0
    elsif @parallax_loop_x
      return @parallax_x / 16
    elsif loop_horizontal?
      return 0
    else
      w1 = bitmap.width - Standrad::SCREEN_WIDTH
      w2 = @map.width * 32 - Standrad::SCREEN_WIDTH
      if w1 <= 0 or w2 <= 0
        return 0
      else
        return @parallax_x * w1 / w2 / 8
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 计算显示远景的 Y 坐标
  #     bitmap : 远景位图
  #--------------------------------------------------------------------------
  def calc_parallax_y(bitmap)
    if bitmap == nil
      return 0
    elsif @parallax_loop_y
      return @parallax_y / 16
    elsif loop_vertical?
      return 0
    else
      h1 = bitmap.height - Standrad::SCREEN_HEIGHT
      h2 = @map.height * 32 - Standrad::SCREEN_HEIGHT
      if h1 <= 0 or h2 <= 0
        return 0
      else
        return @parallax_y * h1 / h2 / 8
      end
    end
  end

  #--------------------------------------------------------------------------
  # ● 向下滚动
  #     distance : 滚动距离
  #--------------------------------------------------------------------------
  def scroll_down(distance)
    if loop_vertical?
      @display_y += distance
      @display_y %= @map.height * 256
      @parallax_y += distance
    else
      last_y = @display_y
      @display_y = [@display_y + distance, (height - 15) * 256].min
      @parallax_y += @display_y - last_y
    end
  end

  #--------------------------------------------------------------------------
  # ● 向右滚动
  #     distance : 滚动距离
  #--------------------------------------------------------------------------
  def scroll_right(distance)
    if loop_horizontal?
      @display_x += distance
      @display_x %= @map.width * 256
      @parallax_x += distance
    else
      last_x = @display_x
      @display_x = [@display_x + distance, (width - 20) * 256].min
      @parallax_x += @display_x - last_x
    end
  end

OK。



作者: 塑望    时间: 2008-10-14 06:56
难道在让VX脚本等功能慢慢完善起来??


美兽这几天很卖力地写..理所当然.顶你一下
作者: 风雪优游    时间: 2008-10-14 22:55
看不明白……支持一个- -
作者: wy29    时间: 2008-10-15 11:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: 一路一风尘    时间: 2008-10-15 18:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: wy29    时间: 2008-10-15 22:51
提示: 作者被禁止或删除 内容自动屏蔽
作者: 一路一风尘    时间: 2008-10-16 06:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: sagamore    时间: 2008-11-11 20:30
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1