• 2018年全军院校招生计划下达:计划招收学员3.05万名 2019-06-15
  • 晋城市举办干部素质提升工程第十八期专题讲座 2019-06-15
  • 抖音广告出现对英烈邱少云不敬内容 今日头条致歉 2019-06-13
  • 超半数巴西民众对世界杯不感兴趣--旅游频道 2019-06-12
  • 外交部举行中外媒体吹风会:王毅介绍上合组织青岛峰会情况 2019-06-12
  • 2018网络中国节·端午 2019-06-04
  • 韩媒:韩美商定暂停原定8月“乙支自由卫士”联演 2019-06-03
  • 重庆市公安局交通管理局互联网交通安全服务管理平台 2019-06-03
  • 俄侦察船穿越英吉利海峡 英国急派军舰战机监视 2019-05-28
  • 网购陷阱多 女子花3000元买5套化妆品只有2套是真的 2019-05-28
  • 环保约谈濂溪区主要负责同志 谢一平要求立行立改真抓真改 2019-05-25
  • 官宣!广东签约北京3冠功勋 大莫助拳阿联未来可期 2019-05-25
  • 党建第一责任与发展第一要务相融合br全面提升机关党建工作水平 2019-05-22
  • 卡纳瓦罗:对比赛结果不满意 晋级机会各占一半 2019-05-22
  • 天津宣讲十九大:津沽大地舞春风,小康路上添豪情 2019-05-21
  • 福建36选7和值走势图: zhang273162308 Unity&Shader案例篇—光锥扫描效果

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

    福建36选7和值走势图 www.00-na.com 121

    主题

    567

    帖子

    6911

    积分

    Rank: 9Rank: 9Rank: 9

    UID
    3579
    好友
    108
    蛮牛币
    5312
    威望
    0
    注册时间
    2013-9-10
    在线时间
    1490 小时
    最后登录
    2019-6-18

    专栏作家活力之星游戏蛮牛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初来乍到
    123/150
    排名
    18791
    昨日变化

    1

    主题

    35

    帖子

    123

    积分

    Rank: 2Rank: 2

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

    0

    主题

    27

    帖子

    289

    积分

    Rank: 3Rank: 3Rank: 3

    UID
    250515
    好友
    0
    蛮牛币
    100
    威望
    0
    注册时间
    2017-10-24
    在线时间
    100 小时
    最后登录
    2019-6-14
    板凳
    2019-2-21 17:20:49 只看该作者
    来学习学习,打算做一个俯视视角的游戏需要这样的功能
    3偶尔光临
    171/300
    排名
    11372
    昨日变化

    2

    主题

    25

    帖子

    171

    积分

    Rank: 3Rank: 3Rank: 3

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

    2

    主题

    25

    帖子

    171

    积分

    Rank: 3Rank: 3Rank: 3

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

    2

    主题

    25

    帖子

    171

    积分

    Rank: 3Rank: 3Rank: 3

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

    41

    主题

    741

    帖子

    2029

    积分

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

    UID
    214924
    好友
    5
    蛮牛币
    18778
    威望
    0
    注册时间
    2017-3-28
    在线时间
    531 小时
    最后登录
    2019-6-13
    7#
    2019-2-21 17:44:00 只看该作者
    7日久生情
    2229/5000
    排名
    1089
    昨日变化

    30

    主题

    325

    帖子

    2229

    积分

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

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

    1

    主题

    68

    帖子

    1653

    积分

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

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

    31

    主题

    541

    帖子

    5255

    积分

    Rank: 8Rank: 8

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

    0

    主题

    709

    帖子

    2290

    积分

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

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

    7

    主题

    271

    帖子

    2203

    积分

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

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

    0

    主题

    643

    帖子

    1714

    积分

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

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

    1

    主题

    80

    帖子

    814

    积分

    Rank: 5Rank: 5

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

    0

    主题

    163

    帖子

    3020

    积分

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

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

    本版积分规则

  • 2018年全军院校招生计划下达:计划招收学员3.05万名 2019-06-15
  • 晋城市举办干部素质提升工程第十八期专题讲座 2019-06-15
  • 抖音广告出现对英烈邱少云不敬内容 今日头条致歉 2019-06-13
  • 超半数巴西民众对世界杯不感兴趣--旅游频道 2019-06-12
  • 外交部举行中外媒体吹风会:王毅介绍上合组织青岛峰会情况 2019-06-12
  • 2018网络中国节·端午 2019-06-04
  • 韩媒:韩美商定暂停原定8月“乙支自由卫士”联演 2019-06-03
  • 重庆市公安局交通管理局互联网交通安全服务管理平台 2019-06-03
  • 俄侦察船穿越英吉利海峡 英国急派军舰战机监视 2019-05-28
  • 网购陷阱多 女子花3000元买5套化妆品只有2套是真的 2019-05-28
  • 环保约谈濂溪区主要负责同志 谢一平要求立行立改真抓真改 2019-05-25
  • 官宣!广东签约北京3冠功勋 大莫助拳阿联未来可期 2019-05-25
  • 党建第一责任与发展第一要务相融合br全面提升机关党建工作水平 2019-05-22
  • 卡纳瓦罗:对比赛结果不满意 晋级机会各占一半 2019-05-22
  • 天津宣讲十九大:津沽大地舞春风,小康路上添豪情 2019-05-21