Project1
标题:
怎么在对话框里放图片,坐标如何调整?
[打印本页]
作者:
炽牙
时间:
2010-2-18 09:54
本主题需向作者支付
10 星屑
才能浏览
作者:
魔天
时间:
2010-2-18 11:10
我直接把以前66的教程发上来了。。自己看看吧。。
教程内容
游戏中对话显示头像似乎已成为Rmer必备的步骤,在RMXP中能够通过一些组合从而在显示文章的同时显示头像,具体的几个常用方法如下:
1、事件指令中的显示图片。
a) 最简单、最基本的方法,在显示文章指令前,显示图片一张(这张图片就是你的头像,放在游戏目录中的/Pictures目录中),在显示文章指令后消失这张图片。
b) 有时在第一个显示文章的对话框后没有进行其他操作的情况下,可以不用先删除图片再进行显示图片的操作,直接覆盖掉前一张头像即可。大家都清楚,编号相同的两张图片只能存在一张,如果前一张编号是1,后一张编号也是1,那么在后面操作的图片就会覆盖掉前一张图片(前一张自动消失)。那么在这种连续对话框的情况下就可以直接覆盖了,在显示文章之后还有其它长时间操作的指令时,才消失图片。
c) 你可能要问为什么不能直接更改图片的透明度而达到消失图片的效果,那是因为虽然图片看不见了,但占着内存,事件指令中的图片消失则是完全消失。
d) 半身像的头像可能会要求挡住对话框,但默认却是被对话框挡住,这时需要改一下脚本编辑器中Window_Message的图层设置:
打开脚本编辑器,找到Window_Message的分类,看到脚本的第15行
self.z = 9998
slef.z后面的数值差不多就是表示图层,越大越在前面。再RGSS默认的情况下,把这个数值改为小于等于197,就是被图片覆盖了(BTW,198~199是只有文字在图片上,对话框被覆盖;大于等于200则是完全把图片覆盖,下不再述)。
e) 单个头像要显示到对话框的地方,需要调整一下坐标(下不再述)。找坐标分人算和photoshop中找两种方法。
人算:通过RMXP界面中事件格数换算,能得到粗略的坐标,每一个事件格是32X32,也就是横纵各32像素,640X480的画面,横向有20个事件格,纵向有15个事件格,得出公式:事件格坐标 X 32 = 像素坐标。
Photoshop:通过美国Adobe公司的Photoshop软件来精确查找坐标。将一张带有对话框的游戏截图在photoshop中打开,按下F8,会出现Info的面板,上面的X和Y就是像素坐标了,激活640X480的游戏截图窗口,把鼠标放在需要显示图片的原点上,右边就会出现精确的X、Y坐标(把图片放大会比较容易)。
2 、文字加强脚本。
想必这个脚本也很闻名了,只需要根据脚本开头的注释说明走,就能进行显示头像。
3、公共事件。
对于一个大中型游戏来说,过于大量繁琐和杂乱的头像,在事件中参差不齐,不论是修改还是查看时都很不方便,这时可以把所有显示头像的步骤整合到公共事件中来做。具体方法如下:
a) 首先需要一个控制每一张头像的变量,本例暂时命名为“主线剧情对话框”。将这个变量的操作放在第一个显示文章前的地方。
b) 打开数据库,进入公共事件选单,选择一个公共事件的编号,本例命名为“dialog box on”。接着在执行内容中选择事件指令——条件分歧(不用选择不符合条件的情况下),当变量“主线剧情对话框”为10的情况下,显示第一张头像。等于20的时候,显示另外的头像,编号全部一致。以此类推。在所有条件分歧之后(每一张头像一个条件分歧),这个公共事件就算完成了。
c) 接着制作另外一个公共事件,本例命名为“dialog box off”,内容是将头像消失(也可以不制作,直接在事件中消失图片)(这个公共事件中可以做一些头像的处理,像渐变之类的,而自制对话框的话更需再在这里消失,节省了每次在事件中的操作选项)。
d) 公共事件完成,在显示文章的指令前更改变量“主线剧情对话框”的值,更改为你需要显示的头像的变量(比如要显示第一张头像,就更改变量为10)。接着调用公共事件“dialog box on”。在显示文章的指令后调用公共事件“dialog box off”,或者直接消失头像。
e) 关于制作中的技巧:
在这个公共事件中有一些技巧,能让你在记住某一个值的变量对应哪一个头像时比较轻松地对号入座;能节省事件页的长度。
对号入座:
大中型游戏中,往往每个角色的头像都有数种表情,本例中每个角色头像的表情不超过10个。在这种情况下,可以让每10个变量的值代表一个角色,比如:
变量10,1号角色的1号表情;
变量11,1号角色的2号表情;
变量12,1号角色的3号表情;
………………………………
变量20,2号角色的1号表情;
变量21,2号角色的2号变量;
………………………………
变量30,3号角色的1号表情;
………………………………
变量的数值可以取让你容易记住的所对应的每个角色的头像。
节省事件页长度:
原理同显示图片的方法,在连续的显示文章的对话框指令中,不用每次都先消失图片再来显示,相同头像的连续对话框中间可以没有任何操作。
和显示图片不同的是,在不同头像的连续对话框之间不能直接更改变量的值来更改对话框的头像,需要调用“dialog box off”后再更改变量的值,然后调用“dialog box on”。这是因为条件分歧的判断处理每次只有一次,先前调用了公共事件后,判断就结束了,在再次重新调用公共事件之前是不会重新判断变量的值的。
其实这个公共事件是沿用了《黑暗圣剑传说》中的公共事件,只是《黑暗》中还有自制的对话框,在公共事件的最开始更改显示文字的坐标(改到自制对话框上合适的地方),在消失的公共事件中把位置更改回来(有一些脚本的操作是字体的外阴影效果),有兴趣可以去研究研究。
作者:
炽牙
时间:
2010-2-18 16:12
回复
2#
魔天
请问是否可以移动对话框? 比如想右移动几厘米...
作者:
魔天
时间:
2010-2-19 14:39
回复
3#
炽牙
这个文章选框的位置。。要修改 Window_Message 里面的脚本。。
#--------------------------------------------------------------------------
# ● 初始化状态
#--------------------------------------------------------------------------
def initialize
super(80, 304, 480, 160)#修改这里。。
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
self.z = 9998
@fade_in = false
@fade_out = false
@contents_showing = false
@cursor_width = 0
self.active = false
self.index = -1
end
#还有这个地方,自己看了修改
#--------------------------------------------------------------------------
# ● 设置窗口位置与不透明度
#--------------------------------------------------------------------------
def reset_window
if $game_temp.in_battle
self.y = 16
else
case $game_system.message_position
when 0 # 上
self.y = 16
when 1 # 中
self.y = 160
when 2 # 下
self.y = 304
end
end
if $game_system.message_frame == 0
self.opacity = 255
else
self.opacity = 0
end
self.back_opacity = 160
end
作者:
炽牙
时间:
2010-2-21 09:12
回复
4#
魔天
我已经研究出来了,不过还是谢谢你...
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1