class Sprite_Battler < Sprite_Base alias :zchange_animation_set_sprites :animation_set_sprites def animation_set_sprites(frame) zchange_animation_set_sprites(frame) @ani_sprites.each_with_index do |sprite, i| next unless sprite sprite.z -= 400 if [72,74,76].include?(@animation.id) #将[72,74,76]改成你想要出现在后面的动画的ID组 #如果有一部分图像仍然出现在战斗图上面的问题,请尝试把400改成420或450等比较大的值 end end end
class Sprite_Battler < Sprite_Base
alias :zchange_animation_set_sprites :animation_set_sprites
def animation_set_sprites(frame)
zchange_animation_set_sprites(frame)
@ani_sprites.each_with_index do |sprite, i|
next unless sprite
sprite.z -= 400 if [72,74,76].include?(@animation.id)
#将[72,74,76]改成你想要出现在后面的动画的ID组
#如果有一部分图像仍然出现在战斗图上面的问题,请尝试把400改成420或450等比较大的值
end
end
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。
以上。 |