Project1

标题: 如何修改所有图片的z坐标 [打印本页]

作者: 鄢炎餍    时间: 2014-8-8 22:12
标题: 如何修改所有图片的z坐标
好吧我先在sprite_picture改了一下没有出错但是不行;
然后我又去game_picture里面改结果出错惹(说是调用了没有定义的方法……不等等,z这个属性不是有的吗)
然后我又去Interpreter 5这个脚本里面改了也出现了一样的问题……
好吧我先用的self,但是会报错,然后我就改成和上面一样的$game_screen.pictures[number].
然后还是报错_(:з」∠)_啊好心塞……
我其实三年前好像是做过这样的事情,在脚本编辑器里改动一部分然后把所有图片的z坐标调整为6000的
但是我现在居然忘了个干净_(:з」∠)_……
好吧哪位大神来告诉我怎么弄/w\感激不尽
作者: 鄢炎餍    时间: 2014-8-8 22:18
好吧我刚才发现自己脑抽惹/w\
不用加前缀直接z就不会报错……但为什么我改到一万图片还是在对话框下面【。
所以我还是跪了/w\
作者: RyanBern    时间: 2014-8-10 20:43
一个一个回答问题。
首先改z坐标是不能去Game_Picture,Game_Screen里面去的,因为那根本不是Drawable模块的东西,只是为了方便而设置的数据处理类。
所以应该参考Sprite_Picture和Spriteset_Map里面的代码。
Sprite_Picture的62行是关于z坐标的更新,大小和图片编号一致。
我们可以试着修改这里,把它变得很大(例如9999),但是显示的图片依然会被窗口覆盖。显然原因不是这里。
我们知道Sprite都有显示的端口Viewport,如果端口z值不同的话,那么显示的顺序还要参见端口的z坐标。
在Spriteset_Map的17和46行,我们可以看到管理图片的活动块的Viewport的z值为200,但是Window_Message的z值是9998。在这里要注意,处于不同视口中的精灵和窗口比较先后不能只看精灵本身z坐标,还和视口Viewport的z值有关。但是Window类的对象的视口为nil,刚才经过试验,可以发现,如果不指定视口,比较z值的时候,把窗口的z值和有视口的精灵的视口的z值比,哪个大哪个就在前面显示。这也就是为什么把图片的z值调成很大依然没用,原因是图片的视口Viewport的值太小。
解决方法:把Window_Message的z值调成198或以下。或者调Spriteset_Map中的@viewport2的z值在9998以上。




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