首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >统一C#检查凸轮问题的GameObject是否不可见

统一C#检查凸轮问题的GameObject是否不可见
EN

Stack Overflow用户
提问于 2020-02-20 11:45:00
回答 2查看 2.1K关注 0票数 0

我有一个AimBot脚本来检查水平上有多少敌人,如果他们在一个特定的范围内,现在他们是否可以从摄像机中看到。我找到了这两个密码,但都说墙后面的敌人是看得见的。对不起英语不好^^

Code1

代码语言:javascript
运行
AI代码解释
复制
    //https://answers.unity.com/questions/8003/how-can-i-know-if-a-gameobject-is-seen-by-a-partic.html
    bool IsTargetVisibleV1(Camera c, GameObject go)
    {
        var planes = GeometryUtility.CalculateFrustumPlanes(c);
        var point = go.transform.position;
        foreach (var plane in planes)
        {
            if (plane.GetDistanceToPoint(point) < 0)
                return false;
        }
        return true;
    }

代码2

代码语言:javascript
运行
AI代码解释
复制
    bool IsTargetVisibleV2(Camera cam,Renderer[] ren)
    {
        foreach (Renderer renderer in ren)
        {
            if (renderer.isVisible)
            {
                return true;
            }
        }
        return false;
    }

EN

回答 2

Stack Overflow用户

发布于 2020-02-21 08:13:18

需要注意的是,除了直接可见性之外,Renderer.isVisible还可能返回true。阴影。在Unity3D docs:https://docs.unity3d.com/ScriptReference/Renderer-isVisible.html中有注释。

您所做的现有代码可以进行良好的第一次检查,以筛选出可以快速确定为不可见的对象(特别是结果检查)。但是,当这些检查返回可见时,您可能需要执行额外的检查,以确保对象是真正可见的。为此,您可能要执行一系列的光线投射。

但是,你不能仅仅在每个角色的中心直接进行射线投射,因为一个角色可能会被部分屏蔽。根据您程序的需要,我建议对对象的包围框的中心和所有8个角落进行光线投射。(如果您的字符被包装在盒对撞机中,您可以将其用于您的角。)如果您需要通过小窗口或其他方法检测可见性,则可能需要做更多的工作。

代码语言:javascript
运行
AI代码解释
复制
RaycastHit hit;
//Do we hit any geometry?
Physics.Raycast(cameraOrigin, targetPoint, out hit, maxDistance, layermask);

如果您有一个完全包含您的字符的collider,那么使用hit.collider很容易进行检查。

https://docs.unity3d.com/ScriptReference/Physics.Raycast.html

票数 1
EN

Stack Overflow用户

发布于 2020-02-21 07:49:56

在第一个代码示例中,您将检查游戏对象是否与任一视图平面之间的距离小于0单位。这只会检查物体是否在飞机的“后面”。

如果需要呈现renderer.isVisible,则MeshRender将返回true。在您的示例中,敌人并不是完全由墙壁覆盖的,因此它们确实需要渲染。但是,在完全模糊的情况下,这种方法应该有效。

我认为您应该检查isVisible,以确定该对象是否处于摄像机视图中。然后,如果将部分覆盖计算为覆盖,则执行射线转换以检查呈现为但部分覆盖的对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60327456

复制
相关文章
React技巧之检查元素是否可见
原文链接:https://bobbyhadz.com/blog/react-check-if-element-in-viewport[1]
chuckQu
2022/08/19
1.1K0
当前页面是否可见
Document.hidden属性来自于浏览器Page Visibility API。
公众号@魔术师卡颂
2020/08/26
2K0
CA2109:检查可见的事件处理程序
除非绝对必要,否则不要公开事件处理方法。 只要处理程序和事件签名匹配,就可以将调用公开方法的事件处理程序(委托类型)添加到任何事件中。 事件可能由任何代码引发,并且经常由高度可信的系统代码引发,以响应用户操作(例如单击某个按钮)。 向事件处理方法添加安全检查不会阻止代码注册调用方法的事件处理程序。
用户4268038
2022/02/20
5570
JavaScript 检查是否是数字
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/109551.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/05
1.1K0
js检查日期是否合法
检查日期是否合法 <script> function CheckDateTime(str) { var reg = /^(\d+)-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; var r = str.match(reg); if (r == null) return false; r[2] = r[2] - 1; var d = new Date(r[
江一铭
2022/06/16
6.5K0
js检查是否是数组
该方法兼容Chrome 5, Firefox 4.0, IE 9, Opera 10.5 和 Safari 5,详细兼容性,可以查阅这篇文章。
IT工作者
2022/01/27
3.5K0
JS检查是否支持Storage
查看效果:http://hovertree.com/code/html5/q69kvsi6.htm
全栈程序员站长
2022/07/15
3K0
检查app的activity是否在当前
APP开发中经常会遇到这种需求,需要检查当前的APP是不是可见的,比如,如果是可见的就维持一个socket长连接,如果切到后台不可见了,就断开这个连接。Android本来并不允许APP去监听home键事件,所以我们没发像iOS那样通过监听home键事件来做对应的处理。不过还好Android的Activity的生命周期给我们提供了一种解决这个问题的方法,我们只需要在每个Activity的onStart和onStop中去维持一个计数,如果这个数值大于0,就表示我们的APP还有Activity是在前台运行的,等
xiangzhihong
2018/01/30
1K0
检查Linux是否被入侵的方法
一、检查系统日志 lastb //检查系统错误登陆日志,统计IP重试次数 二、检查系统用户 1、cat /etc/passwd //查看是否有异常的系统用户 2、grep "0" /etc/passwd //查看是否产生了新用户,UID和GID为0的用户 3、ls -l /etc/passwd //查看passwd的修改时间,判断是否在不知的情况下添加用户 4、awk -F : '$3==0 {print $1}' /etc/passwd //查看是否存在特权用户 5、awk -F : 'length($2
joshua317
2018/04/16
2.2K0
dotnet C# 如何使用 MemoryFailPoint 检查是否有足够的内存资源来执行操作
在 dotnet 里面的 MemoryFailPoint 可用来测试当前进程是否还能分配申请给定大小的内存空间,这个是一个高级编程的类型,大部分情况下都不需要用到。本文内容由 New Bing 编写,将和大家介绍 MemoryFailPoint 的使用方法
林德熙
2023/05/28
8840
python 检查是否存在ddos攻击
import dpkt import socket import optparse
用户5760343
2019/07/31
3.8K0
python 检查是否存在ddos攻击
C#: 不同的方式检查Null
检查参数值是否为空的经典方法是什么?如果您已经使用C语言开发了一段时间,您可能会熟悉以下经典语法:
JusterZhu
2022/12/07
4630
C#: 不同的方式检查Null
检查参数值是否为空的经典方法是什么?如果您已经使用C语言开发了一段时间,您可能会熟悉以下经典语法:
沙漠尽头的狼
2021/12/01
5260
iOS App不弹框询问“是否允许应用访问数据”的问题
1、一般情况下,App首次启动都会弹出一个询问用户“是否允许应用访问数据”的弹框;
动动我试试
2020/03/12
3.5K0
php-检查网站是否宕机
浏览量 2 <?php $url="http://www.google.com"; $agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT
kdyonly
2023/03/03
1.7K0
Unity基础(7)-GameObject类
01-Unity下的GameObject类 引擎下的GameObject菜单 引擎下的GameObject菜单 02-Unity下的GameObjcet类属性 Name 对象名,可以重复,无限数量 T
孙寅
2020/06/02
2K0
C# Thread.Sleep 不精准的问题以及解决方案
我们在测试的时候,在对应 API 里面采用了 Thread.Sleep(ms) 来模拟慢请求。
晓晨
2022/05/10
1.7K0
C# Thread.Sleep 不精准的问题以及解决方案
Unity 引擎资源管理代码分析 ( 1 )
本文主要分析了Unity引擎的资源管理系统,以及其源代码中的资源加载流程。首先介绍了资源管理系统的整体架构,然后详细说明了资源加载的具体实现。最后,通过分析资源加载流程,得出资源加载的本质是查找并加载符合要求的数据。
李海辰
2017/08/25
8.8K0
Unity 引擎资源管理代码分析 ( 1 )
点击加载更多

相似问题

统一更改GameObject颜色(c#)

25

GameObject不包含TryGetComponet的def?统一

13

统一GameObject速度与动画问题

12

网络凸轮的统一许可

12

C#统一-识别影响GameObject的方法

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档