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

Project1

 找回密码
 注册会员
搜索
查看: 1570|回复: 1
打印 上一主题 下一主题

[已经解决] 请教如何调整战斗时技能动画的显示优先度

[复制链接]

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
跳转到指定楼层
1
发表于 2016-11-24 10:11:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
比如我们战斗时放一个技能,一般技能动画的优先级是在敌人图的前面播放。但是我现在要做一个技能,动画优先级是在敌人战斗图的后面、背景的前面。
比如说“地震”魔法,这个动画显示的优先度如果放到敌人前面就不太适合了,需要放到敌人图的后面。(其它的像是敌人命中闪烁等等效果还是照正常显示)
这个动画显示优先度要怎么改?只改某几个编号的优先度。

评分

参与人数 1星屑 +50 收起 理由
RaidenInfinity + 50 结帖

查看全部评分

最近在研究XAS

Lv4.逐梦者 (版主)

梦石
0
星屑
6901
在线时间
7028 小时
注册时间
2013-11-2
帖子
1344

开拓者剧作品鉴家

2
发表于 2016-11-27 12:08:34 | 只看该作者
RUBY 代码复制
  1. class Sprite_Battler < Sprite_Base
  2.  
  3.   alias :zchange_animation_set_sprites :animation_set_sprites
  4.  
  5.   def animation_set_sprites(frame)
  6.     zchange_animation_set_sprites(frame)
  7.     @ani_sprites.each_with_index do |sprite, i|
  8.       next unless sprite   
  9.       sprite.z -= 400 if [72,74,76].include?(@animation.id)
  10.       #将[72,74,76]改成你想要出现在后面的动画的ID组
  11.       #如果有一部分图像仍然出现在战斗图上面的问题,请尝试把400改成420或450等比较大的值
  12.     end  
  13.   end
  14.  
  15. end


使用这个插件脚本并修改指定的数值即可。(如果不会安装的话,请参照我签名档内的链接)

原理是这样:
Sprite_Base是默认系统内负责掌管动画的类。一切关于动画的事都要在这儿做改动。
但是继承Sprite_Base的类有两个(掌管战斗图的Sprite_Battler和掌管行走图的Sprite_Character),而我们只需要改战斗图,所以用了:
class Sprite_Battler < Sprite_Base 来作为改动的类
那么读取每个动画帧的资料并在屏幕上组合成图像的方法是animation_set_sprites。
那么我用alias(别名)来在这个方法的后方增添了一段代码:
循环 @ani_sprites(存着组成动画的图像精灵/容器的数组)
如果动画ID匹配的话,将数组里面的各个sprite(图像精灵)的Z值减去400。(Z值越大越靠前,越小则越靠后)

为什么减掉400呢?我们看Sprite_Base的第207行,Sprite_Battler的第82行和 Game_Enemy的第128行。
Sprite_Base的第207行:sprite.z = self.z + 300 + i
Sprite_Battler的第82行:self.z = @battler.screen_z
Game_Enemy的第128行:return 100

那么你可以知道的是 如果要让动画图出现在敌人的背后,就必须减去300(动画的基本Z值)再减去100(战斗图的基本Z值)。
当然如果你发现还是有问题或者只有一部分的图像在后面,你可以试着增加减去的值,比如420。

以上。

评分

参与人数 2星屑 +215 梦石 +1 收起 理由
VIPArcher + 200 + 1 认可答案
赛露休斯 + 15 已解决!认可答案

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-16 23:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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