体彩排列三出号走势图带连线: zhang273162308 Unity&Shader案例篇—光锥扫描效果

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

排列三2014079期正版藏机图 www.d0po.cn 120

主题

561

帖子

6892

积分

Rank: 9Rank: 9Rank: 9

UID
3579
好友
108
蛮牛币
5167
威望
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
排名
18788
昨日变化
1

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
排名
7735
昨日变化

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日久生情
1961/5000
排名
1896
昨日变化

37

主题

719

帖子

1961

积分

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

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

30

主题

320

帖子

2210

积分

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

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

1

主题

65

帖子

1612

积分

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

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

31

主题

539

帖子

5202

积分

Rank: 8Rank: 8

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

0

主题

685

帖子

2209

积分

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

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

7

主题

255

帖子

2126

积分

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

UID
167044
好友
0
蛮牛币
3420
威望
0
注册时间
2016-9-6
在线时间
631 小时
最后登录
2019-3-24
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日久生情
2956/5000
排名
516
昨日变化

0

主题

162

帖子

2956

积分

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

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

本版积分规则

  • 经营者要想“我心换你心”,就要未雨绸缪,让不诚信的诱惑少一点,如此才能在市场中生存下来。反过来说,承担不起亏损就关门歇业,是否也是一种不诚信呢? 2019-03-21
  • 追风上市公司“跌落神坛”-热门标签-华商网数码 2019-03-21
  • 文化艺术交易场所沙龙第一期活动在京顺利举行 2019-03-16
  • 看把你高兴的屁颠屁颠的,光有赞有什么用?我给你个货真价实的 [大红包]。 2019-03-16
  • 候选企业:中国石油呼和浩特石化公司 2019-02-22
  • 我国纳米核心技术取得重大突破 2019-02-22
  • 北京:端午节民俗地图  小枣粽——竹叶红枣糯糯情  2019-01-26
  • 机器人送快递将在西安试点 识别红绿灯还能“车让人” 2019-01-26
  • 首批限竞房正式入市 戳三大盘看详情! ——凤凰网房产北京 2018-12-09
  • 世界杯频爆冷门网友大呼“天台见”!警方:不要冲动,不要跳楼 2018-08-21
  • 始终如一的是:美国优先。 2018-08-21
  • 825| 69| 332| 931| 832| 748| 178| 562| 239| 266|