Project1

标题: 求助给地图滚动增加一个开关 [打印本页]

作者: ctvip    时间: 2013-1-13 12:49
标题: 求助给地图滚动增加一个开关
本帖最后由 ctvip 于 2013-1-13 13:23 编辑

#==============================================================================
# ■ Game_Player
#------------------------------------------------------------------------------
#   处理主角的类。事件启动的判定、以及地图的滚动等功能。
#    本类的实例请参考 $game_player。
#==============================================================================

class Game_Player < Game_Character
  
  #--------------------------------------------------------------------------
  # ● 画面更新
  #--------------------------------------------------------------------------
  #def update
  ## 本地变量记录移动信息
  #last_moving = moving?
  ## 移动中、事件执行中、强制移动路线中、
  ## 信息窗口一个也不显示的时候
  #unless moving? or #$game_system.map_interpreter.running? or
  #@move_route_forcing #or $game_temp.message_window_showing
  ## 如果方向键被按下、主角就朝那个方向移动
  #case Input.dir4
  #when 2
  #move_down
  #when 4
  #move_left
  #when 6
  #move_right
  #when 8
  #move_up
  #end
  #end
  ## 本地变量记忆坐标
  #last_real_x = @real_x
  #last_real_y = @real_y
  #super
  #update_scroll(last_real_x, last_real_y)
  ## 不在移动中的情况下
  #unless moving?
  ## 上次主角移动中的情况
  #if last_moving
  ## 与同位置的事件接触就判定为事件启动
  #result = check_event_trigger_here([1,2])
  ## 没有可以启动的事件的情况下
  #if result == false
  ## 调试模式为 ON 并且按下 CTRL 键的情况下除外
  #unless $DEBUG and Input.press?(Input::CTRL)
  ## 遇敌计数下降
  #if @encounter_count > 0
  #@encounter_count -= 1
  #end
  #end
  #end
  #end
  ## 按下 C 键的情况下
  #if Input.trigger?(Input::C)
  ## 判定为同位置以及正面的事件启动
  #check_event_trigger_here ([0])
  #check_event_trigger_there([0,1,2])
  #end
  #end
  #end
  #--------------------------------------------------------------------------
  # ● 更新滚动
  #--------------------------------------------------------------------------
  def update_scroll(last_real_x, last_real_y)
  ax1 = $game_map.adjust_x(last_real_x)
  ay1 = $game_map.adjust_y(last_real_y)
  ax2 = $game_map.adjust_x(@real_x)
  ay2 = $game_map.adjust_y(@real_y)
  slowmove = (2 ** (@move_speed - 1)).to_i # 有一项为 0 不变
  fastmove = (2 **  @move_speed).to_i
  length   = (2 ** (@move_speed + 4)).to_i # 有一项为 0 不变
  if  ax2 < CENTER_X - 8
  if (ax2 - CENTER_X) <= -length
  $game_map.scroll_left(fastmove)
  else
  $game_map.scroll_left(slowmove)
  end
  elsif ax2 > CENTER_X + 8
  if   (ax2 - CENTER_X) >= length
  $game_map.scroll_right(fastmove)
  else
  $game_map.scroll_right(slowmove)
  end
  end
  if  ay2 < CENTER_Y - 8
  if (ay2 - CENTER_Y) <= -length
  $game_map.scroll_up(fastmove)
  else
  $game_map.scroll_up(slowmove)
  end
  elsif ay2 > CENTER_Y + 8
  if   (ay2 - CENTER_Y) >= length
  $game_map.scroll_down(fastmove)
  else
  $game_map.scroll_down(slowmove)
  end
  end   
  end

end

#==============================================================================
# ■ Game_Map
#------------------------------------------------------------------------------
#   处理地图的类。包含卷动以及可以通行的判断功能。本类的实例请参考 $game_map 。
#==============================================================================

class Game_Map
  
  #--------------------------------------------------------------------------
  # ● 计算 X 座标减去显示座标
  #     x : X 座标
  #--------------------------------------------------------------------------
  def adjust_x(x)
  return x - @display_x
  end
  #--------------------------------------------------------------------------
  # ● 计算 Y 座标减去显示座标
  #     y : Y 座标
  #--------------------------------------------------------------------------
  def adjust_y(y)
  return y - @display_y
  end

end



以上是脚本,希望哪位朋友可以帮我解决下。上面的判断我没用,好象也用不起,想增加一个开关控制,可行否。
作者: 张咚咚    时间: 2013-1-13 13:10
#==============================================================================
# ■ 弹性滚动地图 V 1.00 BY SLICK
#------------------------------------------------------------------------------
#  处理主角的类。事件启动的判定、以及地图的滚动等功能。
# 本类的实例请参考 $game_player。
#==============================================================================

class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # ● 处理滚动
  #--------------------------------------------------------------------------
  def update_scroll(last_real_x, last_real_y)
    if $game_switches[1] == true    # 当1号开关打开,弹性滚动地图就关闭
      ax1 = $game_map.adjust_x(last_real_x)
      ay1 = $game_map.adjust_y(last_real_y)
      ax2 = $game_map.adjust_x(@real_x)
      ay2 = $game_map.adjust_y(@real_y)
      if ay2 > ay1 and ay2 > CENTER_Y
        $game_map.scroll_down(ay2 - ay1)
      end
      if ax2 < ax1 and ax2 < CENTER_X
        $game_map.scroll_left(ax1 - ax2)
      end
      if ax2 > ax1 and ax2 > CENTER_X
        $game_map.scroll_right(ax2 - ax1)
      end
      if ay2 < ay1 and ay2 < CENTER_Y
        $game_map.scroll_up(ay1 - ay2)
      end
    else
      ax1 = $game_map.adjust_x(last_real_x)
      ay1 = $game_map.adjust_y(last_real_y)
      ax2 = $game_map.adjust_x(@real_x)
      ay2 = $game_map.adjust_y(@real_y)
      slowmove = (2 ** (@move_speed - 1)).to_i
      fastmove = $game_variables[7]+(2 ** @move_speed).to_i
      length = (2 ** (@move_speed + 4)).to_i
      if ax2 < CENTER_X - 8
        if (ax2 - CENTER_X) <= -length
          $game_map.scroll_left(fastmove)
        else
          $game_map.scroll_left(slowmove)
        end
      elsif ax2 > CENTER_X + 8
        if (ax2 - CENTER_X) >= length
          $game_map.scroll_right(fastmove)
        else
          $game_map.scroll_right(slowmove)
        end
      end
      if ay2 < CENTER_Y - 8
        if (ay2 - CENTER_Y) <= -length
          $game_map.scroll_up(fastmove)
        else
          $game_map.scroll_up(slowmove)
        end
      elsif ay2 > CENTER_Y + 8
        if (ay2 - CENTER_Y) >= length
          $game_map.scroll_down(fastmove)
        else
        $game_map.scroll_down(slowmove)
        end
      end
    end
  end  
end
作者: ctvip    时间: 2013-1-13 13:23
暂时还没发现什么大问题,呵呵

谢了,朋友。




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