じ☆ve冰风 发表于 2024-4-19 18:23:40

原地待机片刻的小动作

人物死死的站在那里好象是傻了一些……
如果间隔一段时间我们没有去移动角色,他能不能自己做出点小动作呢?{/cy}

main前插入此段脚本,另附工程,里面有个行走图~~
#==============================================================================# ■ Game_Character (分割定义 1)#------------------------------------------------------------------------------#  处理角色的类。本类作为 Game_Player 类与 Game_Event# 类的超级类使用。#==============================================================================class Game_Characterattr_accessor :time#--------------------------------------------------------------------------# ● 初始化对像#--------------------------------------------------------------------------alias old_ini initializedef initialize    old_ini    @time = 0endend#==============================================================================# ■ Game_Player#------------------------------------------------------------------------------#  处理主角的类。事件启动的判定、以及地图的滚动等功能。# 本类的实例请参考 $game_player。#==============================================================================class Game_Player < Game_CharacterTIME_LIMIT = 200# 抓耳挠腮前的等待时间 (好象也不是帧…不知道是什么单位了)#--------------------------------------------------------------------------# ● 画面更新#--------------------------------------------------------------------------def update    # 本地变量记录移动信息    last_moving = moving?    if @time == TIME_LIMIT      @character_name = @character_name + "_W"      @scratch = true      @step_anime = true      @time = TIME_LIMIT + 1    elsif @time < TIME_LIMIT      @scratch = false      @step_anime = false    end    if @scratch == false      @old_pic = @character_name    end    # 移动中、事件执行中、强制移动路线中、    # 信息窗口一个也不显示的时候    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      @time = 0      @scratch = false      @character_name = @old_pic      when 4      move_left      @time = 0      @scratch = false      @character_name = @old_pic      when 6      move_right      @time = 0      @scratch = false      @character_name = @old_pic      when 8      move_up      @time = 0      @scratch = false      @character_name = @old_pic      end    end    # 本地变量记忆坐标    last_real_x = @real_x    last_real_y = @real_y    super    # 角色向下移动、画面上的位置在中央下方的情况下    if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y      # 画面向下卷动      $game_map.scroll_down(@real_y - last_real_y)    end    # 角色向左移动、画面上的位置在中央左方的情况下    if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X      # 画面向左卷动      $game_map.scroll_left(last_real_x - @real_x)    end    # 角色向右移动、画面上的位置在中央右方的情况下    if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X      # 画面向右卷动      $game_map.scroll_right(@real_x - last_real_x)    end    # 角色向上移动、画面上的位置在中央上方的情况下    if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y      # 画面向上卷动      $game_map.scroll_up(last_real_y - @real_y)    end    # 不在移动中的情况下    unless moving?      @time += 1 if @time < TIME_LIMIT      # 上次主角移动中的情况      if last_moving      # 与同位置的事件接触就判定为事件启动      result = check_event_trigger_here()      # 没有可以启动的事件的情况下      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()      check_event_trigger_there()      end    endendend复制代码

说明:
需要一个行走图 XXXX_W.png,比如以 001-Fighter01.png 为人物行走图的话,就需要一个 001-Fighter01_W.png 的待机行走图。工程里我带的那个很简单~~~就是来回扭头~~可以自行修改。
工程点这里

            本帖来自P1论坛作者亿万星辰,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=2511若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页: [1]
查看完整版本: 原地待机片刻的小动作