设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

角色停止时动画

查看数: 2659 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-9-3 09:11

正文摘要:

下面这段脚本放在Game_Character里的话,角色的图形会自动变化,效果就像事件里NPC的【停止时动画】的效果一样。alias add_update_xdrs update   def update       @step_anime = true & ...

回复

cinderelmini 发表于 2014-9-4 13:10:45
本帖最后由 cinderelmini 于 2014-9-4 14:38 编辑

原理参考Scene_Map,
在Scene_Menu里建立了一个地图活动块,
(其实如果你用的是同个方式在Scene_Menu里显示地图的话那就是一样的了。)
然后update它,需要注意的事,update的时候,

  1. $game_map.update
  2. $game_player.update
  3. $game_system.update
  4. $game_screen.update
复制代码
这些变量都是要更新的,不然是没有动态效果的。

在Game_Character里加入了你上面那个让主角踏步的脚本后,
在Main前insert下面这段脚本,就能在菜单主界面Scene_menu里让地图的所有元素都动起来了。
但需要注意的是,即使菜单打开,角色还是可以操作的,
在这个过程中触发的NPC事件会在退出菜单后执行。
  1. class Scene_Menu
  2.   # ☆ 建立地图活动块
  3.   def create_screen
  4.     @screen = Spriteset_Map.new
  5.   end
  6.   # ☆ 释放地图
  7.   def dispose_screen
  8.     @screen.dispose
  9.   end
  10.   # ☆ 主处理
  11.   alias main_old main
  12.   def main
  13.     create_screen
  14.     main_old
  15.     dispose_screen
  16.   end
  17.   # ☆ 更新地图活动块
  18.   def update_screen
  19.     # 地图和角色等更新
  20.     $game_map.update
  21.     $game_player.update
  22.     # 系统 (计时器)、画面刷新
  23.     $game_system.update
  24.     $game_screen.update
  25.     @screen.update
  26.   end
  27.   # ☆ 画面更新
  28.   alias :org_update :update
  29.   def update
  30.     update_screen
  31.     org_update
  32.   end
  33. end
复制代码
如果你已经建立了地图活动块,
那么请参照自己建立的那个地图活动块变量名,在下面这段里修改变量名。
  1. class Scene_Menu
  2.   # ☆ 更新地图活动块
  3.   def update_screen
  4.     # 地图和角色等更新
  5.     $game_map.update
  6.     $game_player.update
  7.     # 系统 (计时器)、画面刷新
  8.     $game_system.update
  9.     $game_screen.update
  10.     @你已经建立的地图活动块名字.update
  11.   end
  12.   # ☆ 画面更新
  13.   alias :org_update :update
  14.   def update
  15.     update_screen
  16.     org_update
  17.   end
  18. end
复制代码
其他的Scene同理。




分割线



要不移动的话,稍微有点麻烦~
首先找到
  1. Game_Player
复制代码
脚本,
然后在里面找到
  1. def update
  2.     # 本地变量记录移动信息
  3.     last_moving = moving?
  4.     # 移动中、事件执行中、强制移动路线中、
  5.     # 信息窗口一个也不显示的时候
  6.     unless moving? or $game_system.map_interpreter.running? or
  7.            @move_route_forcing or $game_temp.message_window_showing
  8.       # 如果方向键被按下、主角就朝那个方向移动
  9.       case Input.dir4
  10.       when 2
  11.         move_down
  12.       when 4
  13.         move_left
  14.       when 6
  15.         move_right
  16.       when 8
  17.         move_up
  18.       end
  19.     end
复制代码
这里,需要在移动的操作中加上Scene的当前状态的判定,
比如在条件里加上Scene处于菜单Scene的情况的话,就是:
  1.    # 移动中、事件执行中、强制移动路线中、
  2.     # 信息窗口一个也不显示的时候
  3.     unless moving? or $game_system.map_interpreter.running? or
  4.            @move_route_forcing or $game_temp.message_window_showing or $scene.is_a?(Scene_Menu)
复制代码
注意最后一个“or”后面的内容,需要添加其他Scene的话就自行在后面再加or,
句式语法是一样的。



分割线


刚想了一下,发现菜单中触发事件的情况也可以避免,
先在
  1. Game_Player
复制代码
里找到:

  1.     # 不在移动中的情况下
  2.     unless moving?
  3.       # 上次主角移动中的情况
  4.       if last_moving
  5.         # 与同位置的事件接触就判定为事件启动
  6.         result = check_event_trigger_here([1,2])
  7.         # 没有可以启动的事件的情况下
  8.         if result == false
  9.           # 调试模式为 ON 并且按下 CTRL 键的情况下除外
  10.           unless $DEBUG and Input.press?(Input::CTRL)
  11.             # 遇敌计数下降
  12.             if @encounter_count > 0
  13.               @encounter_count -= 1
  14.             end
  15.           end
  16.         end
  17.       end
  18.       # 按下 C 键的情况下
  19.       if Input.trigger?(Input::C)
  20.         # 判定为同位置以及正面的事件启动
  21.         check_event_trigger_here([0])
  22.         check_event_trigger_there([0,1,2])
  23.       end
  24.     end
复制代码
在这前面一行,插入一句
  1. return unless $scene.is_a?(Scene_Map)
复制代码
就能成功避免触发了事件返回地图时执行事件了。

点评

太感谢了!  发表于 2014-9-4 15:53
已编辑新内容。  发表于 2014-9-4 14:23
有没办法,使角色不能移动,只显示动态  发表于 2014-9-4 13:48

评分

参与人数 1梦石 +1 收起 理由
︶ㄣ牛排ぶ + 1 认可答案

查看全部评分

chd114 发表于 2014-9-4 06:22:35
Menu里面显示的好像是战斗图你用一个行走图才有效果的停止时动画做什么
紫英晓狼1130 发表于 2014-9-3 22:07:36
一般我都会使用变量和矩形描绘的方法
变量小于四加一,如果等于五,带入值为一
描绘时高除四,宽也除四同时乘该变量
当然都是在update里
通俗的不能再通俗了呢
无双sxa 发表于 2014-9-3 18:39:23
需要实现角色停止时动画的话,可以使用设置移动路线。

点评

可以尝试公共事件  发表于 2014-9-3 19:25
问题是打开菜单的时候,事件不能执行的,我现在弄的是打开菜单之后,可以看到NPC行动,但是角色图片缺刷新不了,  发表于 2014-9-3 19:22
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-21 16:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表