新宝娱乐城骰宝打不开: zhang273162308 Unity&Shader案例篇—光锥扫描效果

151
回复
1659
查看
打印 上一主题 下一主题
  [ 复制链接 ]
排名
141
昨日变化

新宝娱乐城博彩打不开 www.sl6cl.com.cn 120

主题

560

帖子

6891

积分

Rank: 9Rank: 9Rank: 9

UID
3579
好友
108
蛮牛币
5165
威望
0
注册时间
2013-9-10
在线时间
1478 小时
最后登录
2019-3-22

专栏作家社区QQ达人活力之星游戏蛮牛QQ群会员蛮牛哥

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
一、介绍
      在Unity2018.2.14上,一个实现展示敌方视线扇形光锥效果的Shader,其效果图如图所示,当然这种效果还只是实现了一个视线光锥的简单效果

当这个视线光锥开始扫描的时候,为了表达更加真实的效果,在出现扫描到障碍物的时候,会出现光线被遮挡的效果。如图所示:当光锥扫描到前面的障碍物的时候,会出现光线被遮挡的效果。

二、实现
1、简单半透明扫描扇形光锥Shader代码
游客,如果您要查看本帖隐藏内容请回复


这个Shader只是实现了静态的扇形扫描光锥效果,接下来还有实现光锥转动的时候扫描到障碍物时候的效果。
2、动态扫描
先将光锥的角度进行微分处理,每个单位角度的方向指定距离处得到一个点。由物体向该点发射一个射线,进行射线检测。射线碰到有碰撞体的物体就会得到一个碰撞点,然后将点与扫描半径的比值赋给Shader代码里的深度缓存数组  m_aDepthBuffer。如果没有碰撞到障碍物则赋值为-1。在Shader代码里
[AppleScript] 纯文本查看 复制代码
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'


Shader "ShaderPack/ConeOfSight" {
        Properties{
                _Color("Color",Color) = (1,1,1,1)
                _SightAngle("SightAngle",Float) = 0.5
                _FarHardness("FarHardness",Float) = 0.5
                _RangeHardness("RangeHardness",Range(0,100)) = 5
                _RangeStep("RangeStep",Range(0,1)) = 0.7
                _SourceWhiteness("SourceWhiteness",Range(0,1)) = 1
                //_SourceGlow("SourceGlow",Range(1,10)) = 1
        }

                SubShader{
                        Tags {
                                "Queue" = "Transparent"
                                "RenderType" = "Transparent"
                        }
                        Blend SrcAlpha OneMinusSrcAlpha

                        Pass{
                                ZWrite Off
                                CGPROGRAM

                                #pragma vertex vert
                                #pragma fragment frag

                                #include "UnityCG.cginc"

                                struct v2f {
                                        float4 position : SV_POSITION;
                                        float4 uv : TEXCOORD0;
                                };

                                half4 _Color;
                                half _SightAngle;
                                half _FarHardness;
                                half _RangeHardness;
                                half _RangeStep;
                                half _SourceWhiteness;
                                //half _SourceGlow;

                                //uniform half _CurrentAngle = 0;
                                //int _BufferSize = 64;
                                uniform float _SightDepthBuffer[256];

                                //Vertex
                                v2f vert(appdata_base IN) {
                                        v2f o;
                                        o.position = UnityObjectToClipPos(IN.vertex);
                                        o.uv = IN.texcoord;
                                        return o;
                                }

                                //Fragment
                                fixed4 frag(v2f IN) : SV_Target{
                                        const float PI = 3.14159;

                                        IN.uv.x -= 0.5f;
                                        IN.uv.y -= 0.5f;
                                        half distcenter = 1 - sqrt(IN.uv.x*IN.uv.x + IN.uv.y*IN.uv.y) * 2;

                                        half2 fragmentDir = normalize(IN.uv.xy);
                                        half viewDotPos = clamp(dot(half2(1,0), fragmentDir),0,1);
                                        half sightAngleRads = _SightAngle / 2 * PI / 180;
                                        half sightVal = cos(sightAngleRads);

                                        half4 col = lerp(_Color,half4(1,1,1,1),distcenter*_SourceWhiteness);
                                        col.a *= pow(viewDotPos / sightVal,_RangeHardness) *distcenter * pow(distcenter,_FarHardness);

                                        //col.a *= clamp(distcenter*abs(pow(col.a,-_FarHardness*10)),0,1);
                                        if (viewDotPos < sightVal) 
                                        {
                                                col.a *= _RangeStep;
                                        }
                                        else 
                                        {
                                                // --- Depth check
                                                float fragmentAngle = asin(fragmentDir.y) + sightAngleRads;
                                                float fragmentVal = 1.0f - (fragmentAngle) / (sightAngleRads * 2);
                                                int index = fragmentVal * 256;
                                                if (_SightDepthBuffer[index] > 0 && (1 - distcenter) > _SightDepthBuffer[index])
                                                        col *= 0;
                                        }

                                        col.a *= _Color.a;
                                        return col;
                                }

                                ENDCG
                        }
        }

}



进行判断的时候就会将碰撞到障碍物的后面的透明度都设置为0,这样就实现了光线被遮挡的效果。代码如下:
游客,如果您要查看本帖隐藏内容请回复

三、总结
1、实现了光锥扫描到障碍物的动态效果
2、不足之处是该扫描效果紧紧是水平面的效果,不能做到立体的效果
3、工程下载地址
游客,如果您要查看本帖隐藏内容请回复



2初来乍到
122/150
排名
18786
昨日变化

1

主题

35

帖子

122

积分

Rank: 2Rank: 2

UID
218899
好友
1
蛮牛币
251
威望
0
注册时间
2017-4-22
在线时间
54 小时
最后登录
2019-3-20
沙发
2019-2-21 16:55:48 只看该作者
来学习学习,打算做一个俯视视角的游戏需要这样的功能
3偶尔光临
273/300
排名
7734
昨日变化

0

主题

21

帖子

273

积分

Rank: 3Rank: 3Rank: 3

UID
250515
好友
0
蛮牛币
171
威望
0
注册时间
2017-10-24
在线时间
90 小时
最后登录
2019-3-19
板凳
2019-2-21 17:20:49 只看该作者
来学习学习,打算做一个俯视视角的游戏需要这样的功能
[发帖际遇]: acan1314 捡了钱没交公 蛮牛币 降了 3 . 幸运榜 / 衰神榜
3偶尔光临
171/300
排名
11369
昨日变化

2

主题

25

帖子

171

积分

Rank: 3Rank: 3Rank: 3

UID
116279
好友
0
蛮牛币
577
威望
0
注册时间
2015-8-2
在线时间
56 小时
最后登录
2019-2-21
地板
2019-2-21 17:22:04 只看该作者
6666666666666666
3偶尔光临
171/300
排名
11369
昨日变化

2

主题

25

帖子

171

积分

Rank: 3Rank: 3Rank: 3

UID
116279
好友
0
蛮牛币
577
威望
0
注册时间
2015-8-2
在线时间
56 小时
最后登录
2019-2-21
5#
2019-2-21 17:24:45 只看该作者
不错,学习6666666666
3偶尔光临
171/300
排名
11369
昨日变化

2

主题

25

帖子

171

积分

Rank: 3Rank: 3Rank: 3

UID
116279
好友
0
蛮牛币
577
威望
0
注册时间
2015-8-2
在线时间
56 小时
最后登录
2019-2-21
6#
2019-2-21 17:26:50 只看该作者
学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习学习
7日久生情
1952/5000
排名
1896
昨日变化

36

主题

717

帖子

1952

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
214924
好友
4
蛮牛币
16001
威望
0
注册时间
2017-3-28
在线时间
483 小时
最后登录
2019-3-22
7#
2019-2-21 17:44:00 只看该作者
[发帖际遇]: fengxs420 乐于助人,奖励 3 蛮牛币. 幸运榜 / 衰神榜
7日久生情
2209/5000
排名
1089
昨日变化

30

主题

319

帖子

2209

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
82788
好友
25
蛮牛币
7290
威望
0
注册时间
2015-3-21
在线时间
794 小时
最后登录
2019-3-22
8#
2019-2-21 17:58:09 只看该作者
这个好,谢谢楼主
7日久生情
1610/5000
排名
1159
昨日变化

1

主题

65

帖子

1610

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
179667
好友
1
蛮牛币
6607
威望
0
注册时间
2016-10-31
在线时间
553 小时
最后登录
2019-3-22
9#
2019-2-21 18:17:29 只看该作者
6+66666666666666
8常驻蛮牛
5201/10000
排名
32
昨日变化

31

主题

539

帖子

5201

积分

Rank: 8Rank: 8

UID
47602
好友
5
蛮牛币
25048
威望
0
注册时间
2014-10-3
在线时间
1457 小时
最后登录
2019-3-22
10#
2019-2-21 19:54:01 只看该作者
多谢版主分享,很好的资源。
7日久生情
2205/5000
排名
1393
昨日变化

0

主题

683

帖子

2205

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
135463
好友
0
蛮牛币
262
威望
0
注册时间
2016-1-23
在线时间
632 小时
最后登录
2019-3-22
11#
2019-2-21 21:16:26 只看该作者
66666666666666666666666
7日久生情
2122/5000
排名
758
昨日变化

7

主题

254

帖子

2122

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
167044
好友
0
蛮牛币
3434
威望
0
注册时间
2016-9-6
在线时间
629 小时
最后登录
2019-3-20
12#
2019-2-21 21:20:22 只看该作者
厉害了这个 看着很厉害
7日久生情
1707/5000
排名
2262
昨日变化

0

主题

639

帖子

1707

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
182268
好友
2
蛮牛币
805
威望
0
注册时间
2016-11-9
在线时间
446 小时
最后登录
2019-3-10
13#
2019-2-21 21:37:11 只看该作者
超神之路啊超神之路啊超神之路啊超神之路啊超神之路啊超神之路啊超神之路啊超神之路啊超神之路啊
5熟悉之中
741/1000
排名
4012
昨日变化

1

主题

72

帖子

741

积分

Rank: 5Rank: 5

UID
14034
好友
0
蛮牛币
359
威望
0
注册时间
2014-2-10
在线时间
298 小时
最后登录
2019-3-11
14#
2019-2-21 21:42:31 只看该作者
支持一下~~~~~~~~
7日久生情
2953/5000
排名
515
昨日变化

0

主题

162

帖子

2953

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
57299
好友
3
蛮牛币
2108
威望
0
注册时间
2014-11-24
在线时间
1310 小时
最后登录
2019-3-22
15#
2019-2-21 22:07:40 只看该作者
谢谢楼主分享?。?!
您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

  • 夏天多吃点凉拌菜 这么吃,让你胃口大开! 2019-03-22
  • 骞垮窞甯傜綉缁滃晢鍝佷氦鏄撲笌鏈嶅姟鐩戠骞冲彴 2019-03-21
  • 外媒称新加坡为“特金会”全力以赴:耗资约2000万新元 2019-03-20
  • 传媒期刊秀:《对外传播》 2019-03-19
  • 构建人类命运共同体的中国智慧 2019-03-18
  • 苏州高新区人民医院:引领实验室自动化,满足“井喷”式检测需求 2019-03-18
  • 父亲节当天 美国第一夫人跟特朗普唱了个反调 2019-03-17
  • 阳泉首次颁布地方实体性法规 两部法规将于7月1日起实施 2019-03-16
  • 诗歌三曹对酒当歌 曹操“篡汉”恶名几度真? 2019-03-15
  • 美国首届“‘一带一路’亚洲商务论坛”即将在堪萨斯州举办 2019-03-15
  • 银川:“互联网+政务”加速“放管服”改革 2019-03-14
  • 【学习时刻】颜晓峰少将:加快把人民军队建设成为世界一流军队的强军纲领 2019-03-14
  • 人民日报评论员:满怀信心走好中国道路 2019-03-13
  • 监督效率高了 办案成本低了 2019-03-12
  • 孕期肥胖和超重  易致女儿性早熟 2019-03-11
  • 778| 174| 309| 792| 914| 786| 839| 620| 972| 59|