じ☆ve冰风 发表于 2024-4-19 20:29:23

Vx型Xp用 - Player增强 - Player_Add

清单:
领队切换
惯性行走
弹性滚动
八方向键移动

(如果有其他需要可以回帖(?))
#==============================================================================# ** Player_Add#==============================================================================#==============================================================================# ■ Game_Player#------------------------------------------------------------------------------#  处理主角的类。事件启动的判定、以及地图的滚动等功能。# 本类的实例请参考 $game_player。#==============================================================================class Game_Player < Game_Character#--------------------------------------------------------------------------# ● 常量#--------------------------------------------------------------------------TRUE_SPEED = 4BEGIN_SPEED = 2#--------------------------------------------------------------------------# ● 刷新#--------------------------------------------------------------------------def refresh    @character_name = ""    @character_hue = 0    return if $game_party.actors.size.zero?    @leader_id = 0 if @leader_id.nil? or $game_party.actors[@leader_id].nil?    actor = $game_party.actors[@leader_id]    @character_name = actor.character_name    @character_hue = actor.character_hueend#--------------------------------------------------------------------------# ● 更新惯性#--------------------------------------------------------------------------def update_inertia    return @move_speed = BEGIN_SPEED if Input.dir8 == 0   return @move_speed += 0.5 if @move_speed < TRUE_SPEEDend#--------------------------------------------------------------------------# ● 更新领队切换#--------------------------------------------------------------------------def update_captain    @leader_id += 1 if Input.trigger?(Input::R)    @leader_id -= 1 if Input.trigger?(Input::L)    refresh if Input.trigger?(Input::L) or Input.trigger?(Input::R)end      #--------------------------------------------------------------------------# ● 方向键移动处理#--------------------------------------------------------------------------def move_by_input    return unless movable?    return if $game_system.map_interpreter.running?    case Input.dir8    when 2;move_down    when 4;move_left    when 6;move_right    when 8;move_up    when 1;move_lower_left    when 3;move_lower_right    when 7;move_upper_left    when 9;move_upper_right    end    update_inertiaend#--------------------------------------------------------------------------# ● 可以行动判定#--------------------------------------------------------------------------def movable?    return false if moving?                     return false if @move_route_forcing         return false if $game_temp.message_window_showing         return trueend#--------------------------------------------------------------------------# ● 更新画面#--------------------------------------------------------------------------def update    update_captain    last_real_x = @real_x    last_real_y = @real_y    last_moving = moving?    move_by_input    super    update_scroll(last_real_x, last_real_y)    update_nomoving(last_moving)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    fastmove = (2 ** @move_speed).to_i    length = (2 ** (@move_speed + 4)).to_i    if ax2 < CENTER_X - 8      if (ax2 - CENTER_X)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)CENTER_Y + 8      if (ay2 - CENTER_Y) >= length      $game_map.scroll_down(fastmove)      else      $game_map.scroll_down(slowmove)      end    end      end    #--------------------------------------------------------------------------# ● 非移动中更新#   last_moving : 之前是否正在移动#--------------------------------------------------------------------------def update_nomoving(last_moving)    return if $game_system.map_interpreter.running?    return if moving?    return if check_touch_event if last_moving    if not $game_temp.message_window_showing and Input.trigger?(Input::C)      return if check_action_event    end    update_encounter if last_movingend#--------------------------------------------------------------------------# ● 更新遇敌#--------------------------------------------------------------------------def update_encounter    return if $DEBUG and Input.press?(Input::CTRL)       if $game_map.bush?(@x, @y)                         @encounter_count -= 2                        else                                                @encounter_count -= 1                        endend#--------------------------------------------------------------------------# ● 判断事件是否由接触触发(重叠)#--------------------------------------------------------------------------def check_touch_event    return check_event_trigger_here()end#--------------------------------------------------------------------------# ● 判断事件是否由确认键触发#--------------------------------------------------------------------------def check_action_event    return true if check_event_trigger_here()    return check_event_trigger_there()endend#==============================================================================# ■ Game_Map#------------------------------------------------------------------------------#  处理地图的类。包含卷动以及可以通行的判断功能。本类的实例请参考 $game_map 。#==============================================================================class Game_Map#--------------------------------------------------------------------------# ● 计算 X 座标减去显示座标#   x : X 座标#--------------------------------------------------------------------------def adjust_x(x)    return x - @display_xend#--------------------------------------------------------------------------# ● 计算 Y 座标减去显示座标#   y : Y 座标#--------------------------------------------------------------------------def adjust_y(y)    return y - @display_yendend复制代码
             本帖来自P1论坛作者忧雪の伤,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=177264若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页: [1]
查看完整版本: Vx型Xp用 - Player增强 - Player_Add