小白问个问题关于透明和遮挡
gamemaker吧
全部回复
仅看楼主
level 4
la887744 楼主
打算做一个解密功能
设定spr_1是一个放大镜,镜片是透明图层
spr_2是一个与房间同等大小的黑色图片,用来遮挡房间背景
目标是用放大镜透过黑色背景查看房间背景
什么函数可以实现这个功能[疑问]
2014年08月23日 04点08分 1
吧务
level 13
直接问函数的话……GML里边高级混合模式那里有吧,咱没用过,也没花什么心思去理解,照搬一下原文。
draw_set_blend_mode(mode) 使用显示混合模式。有如下值: bm_normal, bm_add,
bm_subtract, 和 bm_max. 不要忘记在使用后重置为一般模式因为其他精灵和背景都按照新的模式绘制。
draw_set_blend_mode_ext(src,dest) 所谓混合模式,以利用双方的 来源及目的地的颜色.
新的颜色,是一些因素倍源与另一个因素倍的目的地. 这些因素都设定此功能.了解这一点,来源地和目的地都为红色,绿色,蓝色和alpha分量. 因此源地为 (Rs, Gs, Bs, As) 目的地为 (Rd,Gd, Bd, Ad). 所有被视为介于0和1 .混合因素,你可以选择源和目的地是:
* bm_zero: 混合因素是 (0, 0, 0, 0).
* bm_one: 混合因素是 (1, 1, 1, 1).
* bm_src_color: 混合因素是 (Rs, Gs, Bs, As).
* bm_inv_src_color: 混合因素是 (1–Rs, 1–Gs, 1–Bs, 1–As).
* bm_src_alpha: 混合因素是 (As, As, As, As).
* bm_inv_src_alpha: 混合因素是 (1–As, 1–As, 1–As, 1–As).
* bm_dest_alpha: 混合因素是 (Ad, Ad, Ad, Ad).
* bm_inv_dest_alpha: 混合因素是 (1–Ad, 1–Ad, 1–Ad, 1–Ad).
* bm_dest_color: 混合因素是 (Rd, Gd, Bd, Ad).
* bm_inv_dest_color: 混合因素是 (1–Rd, 1–Gd, 1–Bd, 1–Ad).
* bm_src_alpha_sat: 混合因素是 (f, f, f, 1); f = min(As, 1–Ad).
例如,正常的混色模式设置源地混合bm_src_alpha和目的地混合bm_inv_src_alpha .别忘了复位模式后正常使用,因为还另有其他精灵和背景在新的混合模式下绘制.绘画纹理是会带来不少工作,但可以产生更大的结果. 你甚至可以用它来制造假3D游戏。
2014年08月23日 07点08分 3
吧务
level 13
不过,如果只是要一个周围黑色,中间显示的话……可以做一个长、宽都是显示区域2倍的黑方形,正中间挖一个透明块,整个盖在现有图形上啊。这样不管怎样移动,黑方块都会盖住整个屏幕的。
2014年08月23日 07点08分 4
level 11
我觉得楼主意思是放大镜可以移动吧,函数我刚接触gm不是太清楚,但是可以换个思路。把黑色背景放大然后中间放一个放大镜(同一个spr里),把obj的层数调近,然后移动这个obj的话,由于放大镜透明,放大镜下方的东西就看得见了,由于放大镜四周是黑色,所以就看不见了。
2014年08月23日 07点08分 5
level 4
la887744 楼主
已经用黑色背景中间挖洞的方法做了,但是800X600的小游戏,黑色图片已经超出我屏幕分辨率大小了,如果全屏的画大小简直。。。[吐舌]
2014年08月23日 08点08分 6
level 4
la887744 楼主
哈哈哈,想明白了,听我慢慢道来[哈哈]
2014年08月23日 08点08分 7
level 4
la887744 楼主
将放大镜的背景设置成黑色做成一个矩形精灵
取精灵左上右上左下右下四个点
再取房间左上右上左下右下四个点
利用这八个点绘制出八个矩形
这样放大镜可以完美移动,解决了黑色素材过大的浪费问题
脑袋转过弯来就是很简单的问题吗[吐舌]
2014年08月23日 08点08分 8
吧务
level 12
[url]http://q糖豆p[/url]说的很明确了。我用语言和你说说原理。
1、黑屏绘制:你可以不用spr(尽量减少内存占用。一块黑色图片,虽说占内存少。),自己绘制一个长方形黑色方块(大小与屏幕相同)。
2、透镜绘制:同样,你可以用绘制椭圆形实现,颜色为黑色(一会我告诉你为什么)。
3、透镜效果:如果你学过PS的话,你应该明白混合模式。没学过也无所谓。混合模式中有一个功能你可以理解为“负负得正”,即,在这种模式下,两个黑色部分重合,即为无色。
那么好,在这种混合模式下,你可以先绘制一张全屏黑屏长方形。再绘制一个确定位置的黑色椭圆形即可。
2014年08月23日 16点08分 9
sorry。我的方法和糖豆的原理不同。我用的是混合模式。 个人觉得,我这个方法最为简便。
2014年08月23日 16点08分
十分感谢,我想搞清楚的就是“负负得正”效果,原来在混合模式里,以前没学过ps,现在搞清楚了
2014年08月23日 22点08分
1