大神们unity3d里面的unity 圆形遮罩罩怎么做

透明遮罩【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:79,463贴子:
透明遮罩收藏
unity里怎么做到物体是透明的,又能把里面的东西遮住不显示?如下,外面是透明的罩子,能把里面cube遮住,红圈的部分不显示
达内unity3d培训全程&实战教学&,unity3d金牌讲师授课.免费unity3d课程试听中!到达内unity3d学院学习unity3d,只需4个月速成unity3d游戏工程师.
貌似不能吧,那个本身就是个透明的材质。除非给那个柱分2个分布,里面那部分给透明材质
你要的效果是不是类似
我们的项目也想要这个效果,3楼给的网址和楼主的问题不是一个,请问楼主这个问题解决了吗??? 特别棘手这个问题。。。
这个简单啊,改一下遮罩的render queue为 Geometry-1不就完了…
楼主解决了吗??求解决方法
楼主,求解决方案
登录百度帐号推荐应用[原创]Unity3D中的遮罩效果
精华热门加亮
最近由于项目中需要技能冷却功能,所以做了遮罩效果。
目前提供的是矩形遮罩,在以后的版本中准备加入圆形遮罩。
项目结构如下:726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_2_df19f80cc98f037.png');" />
具体的源码大家可以下载了看,简单的介绍下使用方法:首先新建一个gameobject,然后将RectMaskEffect附加到对象上,此时的Inspector显示如下:726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_2_cbfdf.png');" />。需要注意将遮罩材质给予该对象。然后脚本的变量是很简单的,首先就是Half Height和Half Width分别代表矩形宽度和高度的一半,Type就是遮罩类型,目前提供圆周,从左到右,从右到左,从上到下,从下到上几种方式。Color就是遮罩颜色。Is Static变量表示是否实时更新遮罩的颜色。
使用方式很简单吧,效果如下:726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_2_3bede9bda155d47.jpg');" />~~谢谢大家 :)~~
&
[]更新:
修正已知的bug。
新的结构:726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_2_de62fd.png');" />
添加4种新的矩形遮罩效果:从左上到右下,从右下到左上,从左下到右上,从右上到左下,效果如图726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/Mon_2_f64365aef17c9b9.png');" />
[]
115失效,补上附件
[]
基于Unity4.1.2f1更新
添加遮罩开始前的回调函数和遮罩结束的回调函数,API为RegisterPreStartCallback以及RegisterEndCallback
更新代码结构
优化效率
更新Example,效果如图(draw call为2:渲染技能Icon + 遮罩):726 || this.offsetHeight>700){if(this.offsetWidth/726 > this.offsetHeight/700){this.width=726;}else{this.height=700;}}" style="max-width:726max-height:700" title="点击查看原图" onclick="if(this.parentNode.tagName!='A') window.open('/forum/attachment/1304/thread/2_.png');" />
添加了圆形遮罩的结构目录,但尚未实现,会尽快更新 ^-^,谢谢支持!
要评论请先&或者&
有下载了 谢谢分享
kanakan kan
& 楼主果然厚道,只要回复,必须回
?????????????????????????7被浏览1907分享邀请回答11 条评论分享收藏感谢收起1添加评论分享收藏感谢收起写回答shader实例(十八)闪光,圆角,遮罩
一般游戏中技能CD的时候,会用到类似下面这样的效果。之前用过NGUI插件,里面有一个精灵和这个效果一样,但是只是使用并不知道它的原理,刚好看到这个shader就简单分析一下。
效果如下:
求圆角时用到的参考图:
求遮罩时用到的参考图:
原理和分析过程在代码中:
Shader "stalendp/imageShine" {&
&&& Properties
_image ("image", 2D) = "white" {}&
_percent ("_percent", Range(-4, 3)) = 0&
_angle("angle", Range(0, 1)) = 0&
&&& SubShader
Tags {"Queue" =
"Transparent"}&&&&&&
Blend SrcAlpha
OneMinusSrcAlpha&&&
&&&CGPROGRAM&&&&&
&&&#pragma
&&&#pragma
&&&#include
"UnityCG.cginc"
&&&sampler2D
&&&struct v2f
&&&&float4
pos:SV_POSITION;&&&&&
&&&&float2
TEXCOORD0;&&&&
vert(appdata_base v)
= mul (UNITY_MATRIX_MVP,
v.vertex);&&&
v.texcoord.&&&
&&&&return
frag(v2f i) : COLOR0 {&&
&&&&//==================闪光部分========================
对图片进行采样
&&&&fixed4
k = tex2D(_image, i.uv);
&&&&//&增大UV的值,UV值越大下面的lerp获取的值越小
&&&&fixed2
blink_uv = (i.uv + fixed2(_percent)) * 2;
旋转矩阵,旋转30度&
&&&&fixed2x2
rotMat = fixed2x2(0.866,0.5,-0.5,0.866);&
乘以旋转矩阵
&&&&blink_uv
= mul(rotMat, blink_uv);
当y越靠近原点时,RGB值越大
rgba = lerp(fixed(1),fixed(0),abs(blink_uv.y));
+=& fixed4(saturate(rgba));
&&&&//================圆角部分============================
将UV中心点移到模型位
&&&&float2
uv = i.uv.xy -
float2(0.5);&&&
保留图中大于范围为0.8矩形,小于范围为1矩形的xy点
rx = fmod(uv.x, 0.4); // uv.x/0.4的余数
ry = fmod(uv.y,
0.4);&&&&&
在小矩形外的点,值为1
mx = step(0.4, abs(uv.x)); // 0.4 & abs(uv.x) ? 0 : 1
my = step(0.4, abs(uv.y));&
在圆形以外的点,值为1,即被剔除
filletAlpha = 1 - mx * my * step(0.1,
length(half2(rx,ry)));&&
&&&&//================遮罩部分============================
遮罩百分比计算:_angle角度 & 当前坐标点相对正X的角度就遮罩
&&&&_angle
= 6.284*(_angle-0.5);&
角度对比_angle& atan2(uv.y, uv.x)值大于0则返回1为遮罩,否则0不遮罩
//除以3应该是让原模型恢复到原亮度
hui = (2-sign(_angle - atan2(uv.y, uv.x))) / 3;
遮罩RGB色 + 圆角透明A
*= fixed4(fixed3(hui),
filletAlpha);&&&&return
&&&ENDCG&&
&&& FallBack
原文参考:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。欢迎来到、、企业培训教育专区,这里有很多、、、、,我们致力于打造业内培训、学习第一品牌。
遮罩应该很多人都会需要的,血条、进度条神马的都离不开它。最简单高效的办法是用Shader实现,文章出处【狗刨学习网】贴上一个:&
Shader&&Custom/AlphaMask&&{&
Properties&
_Color&(&Main&Color&,&Color)&=&(1,1,1,1)&
_MainTex&(&Base&(RGB)&Trans&(A)&,&2D)&=&&white&&{}&
_MaskTex&(&Mask&(A)&,&2D)&=&&white&&{}&
_Progress&(&Progress&,&Range(0,1))&=&0.5&
Lighting&Off&
ZWrite&Off&
Cull&back&
Fog&{&Mode&Off&}&
Tags&{&Queue&=&Transparent&&&IgnoreProjector&=&True&}&
Blend&SrcAlpha&OneMinusSrcAlpha&
SubShader&
CGPROGRAM&
#pragma&vertex&vert&
#pragma&fragment&frag&
sampler2D&_MainT&
sampler2D&_MaskT&
fixed4&_C&
struct&appdata&
float4&vertex&:&POSITION;&
float4&texcoord&:&TEXCOORD0;&
struct&v2f&
float4&pos&:&SV_POSITION;&
float2&uv&:&TEXCOORD0;&
v2f&vert&(appdata&v)&
o.pos&=&mul(UNITY_MATRIX_MVP,&v.vertex);&
o.uv&=&v.texcoord.&
return&o;&
half4&frag(v2f&i)&:&COLOR&
fixed4&c&=&_Color&*&tex2D(_MainTex,&i.uv);&
fixed&ca&=&tex2D(_MaskTex,&i.uv).a;&
c.a&*=&ca&&=&_Progress&?&0f&:&1f;&
return&c;&
SubShader&
AlphaTest&LEqual&[_Progress]&
SetTexture&[_MaskTex]&{combine&texture}&
SetTexture&[_MainTex]&{combine&texture,&previous}&
Fallback&&Transparent/VertexLit&&
另存为.shader就可以用了,无需任何脚本配合。用这个Shader建一个材质,拖给一个Plane,就能用了。
主纹理可以指定任意图片,不指定图片直接用颜色也可以。Mask可以指定任意带Alpha的图片,只要是Alpha从0-1连续变化就行了,PhotoShop里面一分钟搞定的东西,你懂的。
那个Progress量就是遮罩范围的大小了。要运行时设置,在Update里这样写:renderer.material.SetVector(&_Progress&,当前血量、进度百分比等等..);注意范围是0-1。完全DIY,效果完全取决于图片和DIY的遮罩。
附两个遮罩图片供测试,一个是条形,一个是圆形,纯测试用随便作的,不够美观。
本文已收录于以下专栏:
相关文章推荐
前一阵开发遇到一个需求需要shix
有时候,我们并不想让物体的所有部分都反射,例如一个物体可能某些部分是玻璃材质的可以反射,而有些是塑料材质就不会反射。
在这篇教程里,我们将会学习一种技术来控制反射范围,这是通过一张tex...
前几天为了做多个物体的简单动画(只有移动、旋转、缩放之类的)同时运动效果,说白了算不上什么高级的联动动画,就只是同时控制多个物体运动而已。...
前一篇文章介绍了游戏开始场景的制作,可还没有任何交互,按理说,我的设计是点击界面然后直接到游戏场景,但看到了雨松的这篇文章--Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条后,决定尝试...
遮罩应该很多人都会需要的,血条、进度条神马的都离不开它。
最简单高效的办法是用Shader实现该文章出自【狗刨学习网】
贴上一个:
Shader "Custom/A...
[Unity3D]UGUI 新手引导遮罩控件强制性引导UI控件,关键区域镂空,自动调整关键区域大小。
效果如图: * 使用结构: 代码块示例代码:using UnityE
总结出两种方法:
1.克隆需要高亮和点击的控件
在需要引导的界面(一个panel),弹出引导界面(panel),此时引导界面覆盖其上,引导界面有一层半透明遮罩,遮罩上加boxcollider,屏蔽下层...
遮罩的意思是指对原图被遮住的部分进行一定的处理,这里使用最简单的处理就是染色,所以我们需要创建一个遮罩层,通常使用另一个图片来作为遮罩层,也就是mask图。
一、mask图的作用:跟UI...
我用的是ngui,想做圆形遮罩的效果,我有方形的图片,然后需要动态的变成圆形的就像这样
请问用shader该如何做呢,有详细的步骤咩,求教育啊
--------------------------...
Shader "Custom/Clip"
Properties
_MainTex ("Texture", 2D) = "white" {}
他的最新文章
讲师:李江龙
讲师:司徒正美
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 unity 圆形遮罩shader 的文章

 

随机推荐