赞 | 95 |
VIP | 77 |
好人卡 | 113 |
积分 | 69 |
经验 | 147345 |
最后登录 | 2024-3-23 |
在线时间 | 7027 小时 |
Lv4.逐梦者 (版主)
- 梦石
- 0
- 星屑
- 6886
- 在线时间
- 7027 小时
- 注册时间
- 2013-11-2
- 帖子
- 1344
|
本帖最后由 RaidenInfinity 于 2018-4-22 22:30 编辑
请看Spriteset_Battle的部分。
战斗场景里一共有3个显示端口(Viewport)。
Viewport的用途是将图像精灵(Sprite)分组,和处理画面闪光,画面亮度之类的效果。
Spriteset_Battle的create_viewport方法定义了三个Viewport:@viewport1, @viewport2, @viewport3
Spriteset_Battle里的Sprite都有归类在Viewport里面。例子:@back1_sprite = Sprite.new(@viewport1)
> @viewport1 拥有 背景,敌方战斗图,我方战斗图(如果有)。画面摇晃时,这个Viewport(和里面的所有Sprite)的X轴会同时移动。使用事件/动画的画面色调指令时,这个Viewport会受影响。Z值是0。
> @viewport2 拥有 计时器,事件显示的图片 。使用事件的画面闪烁指令时,这个Viewport会改变颜色来实现闪烁效果。Z值是50。
> @viewport3 没有所属的Sprite,使用事件的渐出淡入指令时,这个Viewport会改变颜色来实现渐入淡出效果。Z值是100。
Viewport的Z值凌驾于Sprite的Z值。也就是说,在@viewport1里的Sprite,就算你Z值放999,还是会被@viewport2里Z值为0的Sprite盖过去。
这是为啥事件显示的图片(@viewport2)会覆盖在战斗图(@viewport1)上。
好,知道了原理之后,现在到解决方法。
当时我弄的玩家角色立绘系统,立绘不是用事件显示图片而是自己写的Sprite。但是也差不多。
于是你知道事件显示的图片,是在@viewport2里的。意思就是说,你必须给玩家角色的Sprite_Battler设置Z值更高的@viewport
但是你要知道…一,只有 @viewport1 才会摇晃和改变色调。二,@viewport2 是不会摇晃的,然后画面闪烁是在这个Viewport进行的。
如果你创建的新Viewport比@viewport2还高,会发生什么事儿呢?吃不到闪烁效果。然后,如果你的Sprite不是@viewport1所属的,就吃不到摇晃的改变色调。那怎么办?请看update_viewports方法。这个方法里面定义了哪个Viewport受什么功能影响。所以我的建议是,弄多几个新的Viewport,调整下Z值,调整哪个受影响,哪些不会。自己实验一下吧。
哦对,定义玩家角色战斗图的方法是create_actors。 |
评分
-
查看全部评分
|