原地待机片刻的小动作
人物死死的站在那里好象是傻了一些……如果间隔一段时间我们没有去移动角色,他能不能自己做出点小动作呢?{/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]