怎么做纯白色的残影效果?
gamemaker吧
全部回复
仅看楼主
level 8
anheimfb 楼主
1.看过t大的一个帖子讲的draw_set_blend_mod_ext()没太看明白
不过各种参数试了很多次 都不行
2.试了draw_set_blend_mode()好像也不行
3.看以前的一个帖子draw_set_blend_mode(bm_add)和 draw_sprite_general()好像可以 ,但是不想用这个。因为涉及图片旋转是围绕左上角进行的,感觉会很麻烦
请问还有没有什么好方法?
2014年12月30日 03点12分 1
level 15
请问,LZ现在能够实现哪些功能,而不能实现什么
2015年01月06日 13点01分 2
贴吧里 仿dnf半成品差不多包括我能做的所有东西了 里面也加了残影效果 但是不是纯色的 想做1楼图片那种纯色的残影 我知道把残影对象的image_blend=c_black可以做纯黑色的残影 ,纯白色的试了很多方法 结果就象1楼说的那3种情况了
2015年01月06日 13点01分
回复 anheimfb :那简单的方法就是直接建立残影的精灵图像
2015年01月06日 13点01分
回复 开不了车 :额,希望能用函数解决,实在不行也就只能这样了
2015年01月06日 13点01分
回复 anheimfb :有没有旋转相关的
2015年01月06日 15点01分
level 15
我试了一下,光弄出纯白色的残影,而没有透明……
2015年01月06日 15点01分 3
没有透明 那就是个方块的残影吧。。或者是方块中间的人物是透明的(我好象用bm_one做出过这个效果)
2015年01月06日 17点01分
回复 anheimfb :我的意思是有轮廓的“剪影”,但剪影只能是不透明的
2015年01月08日 10点01分
回复 开不了车 :6楼的问题能帮我解决下吗
2015年01月08日 11点01分
level 15
{
//设置边界范围
var x1,x2,y1,y2;
x1 = self.x - self.sprite_xoffset - 5;
x2 = self.x+self.sprite_width-self.sprite_xoffset + 5;
y1 = self.y-self.sprite_yoffset - 5;
y2 = self.y+self.sprite_height-self.sprite_yoffset + 5;
//设置
正确的
绘制颜色和alpha
draw_set_color(c_white);
draw_set_alpha(1);
//设置绘制方式为翻转背景颜色,绘制方块
draw_set_blend_mode_ext(bm_inv_dest_color, bm_zero)
draw_rectangle(x1, y1, x2, y2, false);
//设置绘制方式为前景全黑,绘制精灵
draw_set_blend_mode_ext(bm_zero, bm_inv_src_alpha)
draw_sprite(self.sprite_index, -1, self.x, self.y)
//设置绘制方式为翻转背景颜色,绘制方块
draw_set_blend_mode_ext(bm_inv_dest_color, bm_zero)
draw_rectangle(x1, y1, x2, y2, false);
//恢复正常绘制方式
draw_set_blend_mode(bm_normal);
draw_set_alpha(1);
}
三次绘制,首先将底色翻转,然后绘制黑色的精灵,再翻转,就可以把黑色变成白色了
2015年01月07日 02点01分 4
level 12
楼主的问题正是我想问的,楼下解答完美
2015年01月07日 12点01分 5
level 8
anheimfb 楼主
这个draw_set_blend_mode_ext真的好抽象,资料也没多少的,就连问问题都不知怎么问
这两天又琢磨了一下,总结一下,也不知对不:
draw_set_blend_mode_ext(与前景混合的参数,与背景混合的参数)
bm_inv_src_alpha前景的透明通道
bm_inv_inv_src_alpha前景的透明通道取反
bm_inv_dest_alpha背景的透明通道
bm_inv_inv_dest_alpha背景的透明通道取反
bm_inv_src_color前景的颜色
bm_inv_inv_src_color前景的颜色取反
bm_inv_dest_color背景的颜色
bm_inv_inv_dest_color背景的颜色取反
至于
bm_add
bm_subtract
bm_normal
应该是用于draw_set_blend_mode的
还有些问题:
bm_one
bm_max
bm_src_alpha_sat
bm_zero
的意义又是怎样的?
@开不了车
2015年01月08日 09点01分 7
level 15
draw_set_blend_mode_ext(src,dest)的效果就是修改绘制方式,两个参数是源像素(即被绘制的图形)的因子和目标像素(即背景和已绘制的图形)的因子。相乘后相加,得到的结果便是绘制的结果。
比如源像素为(1, 0.75, 0.5, 0.9),目标像素为(0, 0, 1, 1),
src为bm_src_alpha,dest为bm_inv_src_alpha,那么结果是
(1×0.9+0×0.1, 0.75×0.9+0×0.1, 0.5×0.9+1×0.1, 0.9×0.9+1×0.1)
=(0.9,0.675, 0.55, 0.91)
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),即反转的源像素RGBA值
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),即目标像素的RGBA值
bm_inv_dest_color:因子为(1-Rd, 1-Gd, 1-Bd, 1-Ad),即反转的目标像素的RGBA值
bm_src_alpha_sat:因子为(f, f, f, 1),其中f=min(As, 1-Ad),即源像素的透明值和反转的目标像素的透明值的最大值。
2015年01月08日 12点01分 8
最小值
2015年01月08日 13点01分
讲解的非常详细,赞!
2015年01月10日 04点01分
level 9
有个简单的办法 用d3d
//create
color = c_green;
alpha = 0.6;
//draw
d3d_set_fog(1, color, 0, 0);
draw_sprite_ext(sprite_index, image_index, x , y , image_xscale, image_yscale, image_angle, c_black, alpha);
d3d_set_fog(0, color, 0, 0);
2015年01月08日 15点01分 9
哦哦 还有这好事,我回去试试
2015年01月08日 17点01分
level 15
我这里做了一张各种绘制模式的对比图,你可以看看
(估计12~15里面的是和draw_set_blend_mode()一样的)
图片来自:开不了车的百度相册
2015年01月09日 02点01分 11
注:为了对比透明效果,头顶上的角是半透明的,背景的左下角一块也是透明的
2015年01月09日 02点01分
哦 很好
2015年01月09日 04点01分
1