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

Project1

 找回密码
 注册会员
搜索

请问 以事件方式处理事件跟随

查看数: 4527 | 评论数: 13 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-5-5 15:58

正文摘要:

感觉上跟领一队人走近似……但是不知道怎么设置…… 角色在一些地图,比如水下、海底城什么的行走的时候,头上冒出一些水泡效果更好,这些水泡用行走图表现,播放帧数大于4,然后跟随主角移动,在主角头上循环显示 ...

回复

芯☆淡茹水 发表于 2017-5-8 12:50:19
这个

  1. #==============================================================================
  2. class Sprite_Character < RPG::Sprite
  3. #--------------------------------------------------------------------------
  4. # 有气泡显示的地图ID
  5. PLAY_MAP_ID = [1,2]

  6. # 不显示气泡的行走图名
  7. NON_PLAY_CHARACTER = ["",""]

  8. # 控制显示的开关ID
  9. SMALL_SWITCHE = 10

  10. # 气泡样式转换样式的间隔帧数
  11. PATTERN_TIME = 10

  12. # 无气泡的空隙时间帧数
  13. WAIT_TIME = 20

  14. # 气泡相对于人物坐标的X轴调整
  15. ADD_X = 0

  16. # 气泡相对于人物坐标的Y轴调整
  17. ADD_Y = 0

  18. #--------------------------------------------------------------------------
  19.   #--------------------------------------------------------------------------
  20.   alias xr_addsmall_initialize initialize
  21.   def initialize(viewport, character = nil)
  22.     @small_dor = Sprite.new(viewport)
  23.     @count = 0; @max_count = PATTERN_TIME * 16 + WAIT_TIME
  24.     xr_addsmall_initialize(viewport, character)
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   def dispose
  28.     @small_dor.bitmap.dispose if @small_dor.bitmap
  29.     @small_dor.dispose
  30.     super
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   alias xr_addsmall_update update
  34.   def update
  35.     @count = (@count + 1) % @max_count
  36.     create_small if need_refresh
  37.     update_visible if @data_visible != self.visible
  38.     update_pattern if @small_dor.bitmap
  39.     xr_addsmall_update
  40.   end
  41.   #--------------------------------------------------------------------------
  42.   def create_small
  43.     @data_name = @character.character_name
  44.     @data_switch = $game_switches[SMALL_SWITCHE]
  45.     @data_sname = $game_system.small_name
  46.     @small_dor.bitmap.dispose if @small_dor.bitmap
  47.     return unless small_show?
  48.     @small_dor.bitmap = RPG::Cache.character(@data_sname, 0)
  49.     @sw = @small_dor.bitmap.width / 4;@sh = @small_dor.bitmap.height / 4
  50.     @small_dor.ox = @sw / 2;@small_dor.oy = @sh
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   def update_visible
  54.     @small_dor.visible = @data_visible = self.visible
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   def update_pattern
  58.     sx = @count / PATTERN_TIME % 4 * @sw
  59.     sy = @count / PATTERN_TIME / 4 * @sh
  60.     @small_dor.src_rect.set(sx, sy, @sw, @sh)
  61.     @small_dor.x = @character.screen_x + ADD_X
  62.     @small_dor.y = @character.screen_y + ADD_Y
  63.     @small_dor.z = self.z + 16
  64.   end
  65.   #--------------------------------------------------------------------------
  66.   def need_refresh
  67.     return false unless @character
  68.     return true if @data_name != @character.character_name
  69.     return true if @data_switch != $game_switches[SMALL_SWITCHE]
  70.     return true if @data_sname != $game_system.small_name
  71.     return false
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   def small_show?
  75.     return false unless PLAY_MAP_ID.include?($game_map.map_id)
  76.     return false unless @character
  77.     return false unless $game_switches[SMALL_SWITCHE]
  78.     return false if @character.tile_id > 0 or @character.character_name == ""
  79.     return false if NON_PLAY_CHARACTER.include?(@character.character_name)
  80.     return true
  81.   end
  82. end
  83. #==============================================================================
  84. class Game_System
  85.   def small_name; return @small_name || "气泡"; end
  86.   def set_small_name(name);@small_name = name;  end
  87. end
  88. #==============================================================================
复制代码
89444640 发表于 2017-5-24 08:58:40
本帖最后由 89444640 于 2017-5-24 09:09 编辑

测试时发现个问题,
能不能只让这个效果只在事件上显示而不在操作角色上显示。
应用案例,水族馆鱼缸。
角色在外面看,里面的鱼吐气泡,角色和外面围观的npc不跟着一起吐泡。
89444640 发表于 2017-5-16 16:55:59
芯☆淡茹水 发表于 2017-5-9 16:01
改为帧数用变量控制。
不显示气泡的事件,在事件名字后面加一个 , 号,再加一个 1 。当然事件是地图图块和 ...

抱歉很久才上来,测试时发现,脚本中
# 控制气泡样式转换样式的间隔帧数的变量ID,帧数为变量数值。
PATTERN_TIME_ID = 10

# 控制无气泡的空隙时间帧数的变量ID,帧数为变量数值。
WAIT_TIME_ID = 11

若自己修改后面的变量数值,改任意数值,在运行时候会出现动画显示速度飞快且勿等待。
请问测试时有出现这种情况吗?

点评

原来如此!我理解错了。非常感谢耐心的指导。  发表于 2017-5-17 16:37
看范例那个空白事件的变量操作,你就明白了  发表于 2017-5-17 11:01
“帧数为变量数值” 注意是游戏变量,你不是说要随时控制帧数吗,改变这个ID的游戏变量值,就是对应的帧数,  发表于 2017-5-17 11:00
下载一个新的,把数据改成WAIT_TIME_ID = 60 PATTERN_TIME_ID = 40依然显示速度无等待。是不是哪里出问题了?  发表于 2017-5-17 09:43
有啊,把样式转换帧数变量赋值很小,把间隔帧数赋值为零,就是这样子的。  发表于 2017-5-16 21:56
芯☆淡茹水 发表于 2017-5-9 16:01:59
改为帧数用变量控制。
不显示气泡的事件,在事件名字后面加一个 , 号,再加一个 1 。当然事件是地图图块和无行走图的事件,都是不显示的。
Project4.rar (198.59 KB, 下载次数: 43)

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分

芯☆淡茹水 发表于 2017-5-7 13:38:23
89444640 发表于 2017-5-7 12:26
非常感谢,
气泡是显示了,但是有点小问题希望能完善一下。

要改变显示什么东西,在事件-脚本输入:$game_system.set_small_name(图片名)
图片还是做成气泡那样的格式,放在行走图文件夹里。

Project4.rar (198.82 KB, 下载次数: 88)
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-27 10:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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