Project1

标题: 请问 以事件方式处理事件跟随 [打印本页]

作者: 89444640    时间: 2017-5-5 15:58
标题: 请问 以事件方式处理事件跟随
感觉上跟领一队人走近似……但是不知道怎么设置……

角色在一些地图,比如水下、海底城什么的行走的时候,头上冒出一些水泡效果更好,这些水泡用行走图表现,播放帧数大于4,然后跟随主角移动,在主角头上循环显示。
试动画处理,总是在循环的结尾卡几帧,特别影响操作流畅度。
如果用图像处理气泡,就是把气泡花画行走图上,会有严重的遮挡异常。而且只能画4帧,不好看。

这里是素材文件。垂直排列,14帧循环,中间可以有12帧左右间歇

需要该事件跟随角色移动,X坐标相等,Y坐标-1。无论角色是否移动,该事件依然按照事件设置的移动路线显示。

角色行走图

作者: soulsaga    时间: 2017-5-5 16:24
弄下超4帧的行走图不就可以解決了么..最多加个判断..
作者: sirenke    时间: 2017-5-5 17:40
行走方式里为更改角色图片,事件为判断脚步数是否增加,增加的话移动事件到头顶,当然效果肯定还有问题。
作者: 芯☆淡茹水    时间: 2017-5-5 18:22
Project4.rar (198.13 KB, 下载次数: 104)
作者: 89444640    时间: 2017-5-7 12:26
本帖最后由 89444640 于 2017-5-7 12:28 编辑
芯☆淡茹水 发表于 2017-5-5 18:22


非常感谢,
气泡是显示了,但是有点小问题希望能完善一下。

气泡播放的顺序没有按照从左上至右下那么播放。做成动画的话,这个气泡显示应该这样的。

就是说我可以用最多16帧表现一个跟随角色移动的小动画。

@small_dor.bitmap = RPG::Cache.character("气泡", 0)这个是可以设定多组吧,比如雪花、迷雾,啥啥啥的


脚本这么设置的话,地图要不就没有水,要不就全是水,而且是一直播放,没法做成那种从天空进入水面,然后出现气泡的的地图。
能否可以加个开关控制一下,因为是东方系列相关,肯定会牵扯到空战场景问题,用横版表现,角色从空中进入水面的瞬间,我播放水花的动画然后开关打开。就能更好显示角色在水下的状态了。
再比如越飞越高,冲出云层后空气稀薄,角色周边有雪花闪闪的效果。
不知道当初合金弹头3,关卡5开始飞行那段,从高空到地面的场景切换怎么做的,反正是云层遮挡了一下。
在同一个场景中切换出这种效果,演出力度感觉要大于切换场景出现效果。
作者: 芯☆淡茹水    时间: 2017-5-7 13:38
89444640 发表于 2017-5-7 12:26
非常感谢,
气泡是显示了,但是有点小问题希望能完善一下。

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

Project4.rar (198.82 KB, 下载次数: 88)
作者: 89444640    时间: 2017-5-8 10:17
芯☆淡茹水 发表于 2017-5-7 13:38
要改变显示什么东西,在事件-脚本输入:$game_system.set_small_name(图片名)
图片还是做成气泡那样的格 ...

气泡顺序还是有问题,这样,你用这张图,让数字按顺序显示,这样气泡就正常了。

作者: 89444640    时间: 2017-5-8 11:46
89444640 发表于 2017-5-8 10:17
气泡顺序还是有问题,这样,你用这张图,让数字按顺序显示,这样气泡就正常了。
...


换了个素材做实验,白色的看不见--b 另存为就行了。

这个遮挡似乎……不那么对劲。

能否做成效果遮挡人物呢?


作者: 芯☆淡茹水    时间: 2017-5-8 12:50
这个

  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-8 16:28
本帖最后由 89444640 于 2017-5-8 16:30 编辑

还得请教一下,用脚本写文件名替换成别的效果那个

换了几种方式 加空格 去括号 都不行

请测试一下


有个地方请完善一下。

# 不显示气泡的行走图名
NON_PLAY_CHARACTER = ["",""]
需要的是,可以用事件脚本来控制需要显示效果的人物或npc。
比如那个阴云,需要跟着某个角色走,如果用上面的方法,所有npc包括主角都有阴云了。

还有,如果要更改坐标和其他数据,
PATTERN_TIME = XXX
调整时间间隔
WAIT_TIME = XXX
调节等待时间

如果用脚本控制?
还请再看一下,非常感谢。
作者: 芯☆淡茹水    时间: 2017-5-9 16:01
改为帧数用变量控制。
不显示气泡的事件,在事件名字后面加一个 , 号,再加一个 1 。当然事件是地图图块和无行走图的事件,都是不显示的。
Project4.rar (198.59 KB, 下载次数: 43)
作者: 89444640    时间: 2017-5-16 16:55
芯☆淡茹水 发表于 2017-5-9 16:01
改为帧数用变量控制。
不显示气泡的事件,在事件名字后面加一个 , 号,再加一个 1 。当然事件是地图图块和 ...

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

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

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

作者: 89444640    时间: 2017-5-24 08:58
本帖最后由 89444640 于 2017-5-24 09:09 编辑

测试时发现个问题,
能不能只让这个效果只在事件上显示而不在操作角色上显示。
应用案例,水族馆鱼缸。
角色在外面看,里面的鱼吐气泡,角色和外面围观的npc不跟着一起吐泡。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1