如何实现精灵的透明贴图和投影显示?

如图片所示,我要显示一个这样的图片在我的游戏里面,背景是蓝色的设置为透明,紫色的是物体的投影,这个我搜索了半天,也没有发现解决办法,跪求大侠给指条生路啊!!

谢谢

这个可以通过clone一份物体来实现吧,自己封装一下,应该不难。

复制一个精灵,将color设置成紫色,然后调skew属性应该就能实现吧

但是如果想要效果好的话,还是美术出图比较好吧

求大大们帮忙,是否有类似的代码!谢谢

另外,背景是蓝色的怎么通过代码实现透明显示?找了好堵文档,找不到答案,求助了

有两个办法可以解决你这个问题:

  1. 对这个图片做预处理,扫描每个像素,颜色为淡蓝色(0,255,255)的像素值alpha设置为0(即透明),其它为255(不透明),另存这个图像或直接用这个处理过的图像创建精灵(纹理);

  2. 不预处理图像,创建一个shader,判断当从纹理里中读取颜色为淡蓝色(0.0,1.0,1.0)时,discard;

感谢大虾,有没有简单的伪码也好啊,实在被挡在这里好长时间了,谢谢

// 伪代码
// keycolor=RGB(0,255,255),淡蓝色
// 处理后,imgdata中颜色为淡蓝色的像素,其alpha通道已设为0,则透明
void keycolor_filter(byte_t* imgdata_rgba,int bitcount,int imgwidth,int imgheight,uint keycolor)
{
for(i=0;i<imgheight;i++){
for(j=0;j<imgwidth;j++){
cur_color = imgdata_rgba + i*(imgwidth4) + j4;
if(cur_color.rgb==keycolor.rgb){
cur_color.a = 0;
} else{
cur_color.a = 255;
}
}
}
}

感谢!!!!!我试试,稍后我把相关经验也贴出来,感谢!!!!!!

如何clone呢? 能否详细点? 谢谢了。。。

或者哪里有类似blend的例子??? 感谢分享下。。。。试了好几次,还是不行。。。。

!!

搜了很多教程,都没涉及到这个,难道是太简单?

应该是blend,但是自己又确实不知道如何使用blend,这个代码不知道如何实现?

继续求助

继续求助大虾

跪求(亲亲)

继续,谢谢。

第一步分层

  1. 背景层在最后面
  2. 投影层在中间
  3. 物体层在最前面

第二步 投影怎么做

1.创建一张跟物体一模一样的sprite,比如shadow
2.颜色设置成紫色
3.调整shadow的skey和scal,具体值根据你要的光照角度调整

4赞

:+1: