Unity 判断物体是否在阴影中

这篇具有很好参考价值的文章主要介绍了Unity 判断物体是否在阴影中。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

如题所示,今天接到的需求是:Unity 判断物体是否在阴影中


效果视频

链接:https://www.bilibili.com/video/BV1wc411N7KF/?vd_source=75bbe3d71b926e90fdfca6d54888e920

原理

主要是用射线检测


步骤

Unity 判断物体是否在阴影中

找到射线的起始位置和方向
射线的碰撞检测
如果碰到带阴影的物体就判断下


源码

以下源码,挂载到要判断的物体上即可,指定下Light和要显示的Text

using UnityEngine;
using UnityEngine.UI;

public class ShadowTest : MonoBehaviour
{
    public Transform lightTarget;
    public bool ifShadow;
    public Text texts;
    void Start()
    {
        
    }
    void Update()
    {
        Vector3 target = (Quaternion.Euler(lightTarget.eulerAngles) * Vector3.forward).normalized*-1;
        Ray ray = new Ray(transform.position,target);
        RaycastHit hit;
        if (Physics.Raycast(ray,out hit,Mathf.Infinity))
        {
            Debug.Log("碰撞对象"+hit.collider.name);
            Debug.DrawLine(ray.origin,hit.point,Color.red);
            ifShadow = true;
        }
        else
        {
            ifShadow = false;
        }
        texts.text = "是否在阴影中:"+ifShadow;
    }
}

总结

欢迎大佬多多来给萌新指正,欢迎大家来共同探讨。
如果各位看官觉得文章有点点帮助,跪求各位给点个“一键三连”,谢啦~

声明:本博文章若非特殊注明皆为原创原文链接
https://blog.csdn.net/Wrinkle2017/article/details/130724426
————————————————————————————————

💢💢版权声明

版权声明:本博客为非营利性个人原创
所刊登的所有作品的著作权均为本人所拥有
本人保留所有法定权利,违者必究!
对于需要复制、转载、链接和传播博客文章或内容的
请及时和本博主进行联系
对于经本博主明确授权和许可使用文章及内容的
使用时请注明文章或内容出处并注明网址
转载请附上原文出处链接及本声明
文章来源地址https://www.toymoban.com/news/detail-448010.html

到了这里,关于Unity 判断物体是否在阴影中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity判断是否点击到某个按钮

          1、 适应场景:当点击到界面其他地方,这个按钮不再突出显示,怎么解决? private void Update()     {         if (Input.GetMouseButtonDown(0))         {             if (EventSystem.current.currentSelectedGameObject == null || EventSystem.current.currentSelectedGameObject.name != \\\"ButtonName\\\")          

    2024年02月11日
    浏览(33)
  • unity 判断当前设备是否是模拟器(安卓)

    最近有个需求,需要判断当前设备是否是模拟器,网上查了一下,发现基本上都是使用特征字符串进行检索,类似这种: 发现都是不行的,因为现在的模拟器都会伪装== 还有一种方法是使用 AndroidJavaClass 来调用安卓相关的方法:参考林新发大佬 例如这种: ps:由于没用安卓

    2024年02月14日
    浏览(40)
  • Unity利用正则表达式判断字符串是否满足要求

    首先该方法属于C#,是C#提供的,不是unity提供的,但我使用这个是在unity中使用的,故此我将其归入unity笔记。 该方式可用于注册、登录等等需要用户输入的场景,用以判断字符串是否满足正则表达式的要求 首先介绍该API 这里开始介绍,大家可以看看官方的文档Regex.IsMatch 方

    2024年01月16日
    浏览(43)
  • 【URP】场景内物体无阴影

    设置为URP时,首先需要在UniversalRenderPipelineAsset中开启阴影选项,该选项默认开启,如果关闭,则完全没有阴影  由于阴影总量有限,所以阴影的最大距离不可以设置的很大,过大时会导致物体投影很小,但物体自身有阴影   有直射光,关闭cast shadows  有直射光,打开cast sh

    2024年02月14日
    浏览(23)
  • Unity 3D通过脚本控制音频音量、继续、暂停、停止播放;判断当前音乐是否播放;切换音乐;

    演示 在HideInInspector中将三首音乐拖到音乐组中,自定义音乐数量也可以,需要修改代码中切换音乐函数中的部分内容。调用脚本中的函数即可实现对应功能。 重复播放音乐代码如下

    2024年02月12日
    浏览(46)
  • three.js中物体的灯光与阴影设置

    要让球体的阴影照射到平面上,需要使用阴影映射技术。具体步骤如下: 在渲染器中启用阴影: 创建一个平面和一个球体: 创建一个聚光灯: 设置球体和聚光灯的关系: 现在打开浏览器预览,就可以看到球体的阴影照射到了平面上。如果想让阴影更加自然,可以调整阴影

    2024年02月11日
    浏览(31)
  • 【100个 Unity实用技能】☀️ | UGUI中 判断屏幕中某个坐标点的位置是否在指定UI区域内

    🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN 🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 🌲Unity实战100例专栏推荐:Unity 实战100例 教程 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📆 未来很长

    2024年01月25日
    浏览(48)
  • 【Unity Shader】Unity阴影

    记录下在unity中如果想实现阴影,有哪些路子可以选择,目前看有两种 1.经典的shadowmap 2.planar projection 如果开启renderer组件的cast shadows为on,开启平行光的light组件的shadow type,那么就会在物体shader中寻找LightMode=ShadowCaster的Pass进行渲染 场景有两个物体,平面和球体,使用unity内

    2024年02月09日
    浏览(42)
  • Unity Lighting -- 配置阴影

            本笔记使用URP管线进行说明         在项目窗口中,主菜单中选择Edit - ProjectSettings,然后选择Quality,查看当前项目所使用的URP资源,目前例子所使用的资源为UniversalRP_HighQuality资源          在工程窗口中,会有对应的渲染管线配置资源文件,选择这个文件,查看其

    2024年02月14日
    浏览(26)
  • 微信小程序如何判断对象是否为空、判断值是否存在

    在 js 文件中需要对 data 里一些的对象进行判断是否为空 比如这里我要在页面加载时判断 data 中的 record 是否为空: 在 onload() 方法中使用 Object.key().length0 来判断: Object.keys()方法:将给定对象的所有可枚举属性变成一个字符串数组 解释:将需要判断的对象转换为一个字符

    2024年02月11日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包