• 检测目标是否在视线范围内(附视线范围扇形画法)
using UnityEngine;

public class Test_CanSeeTarget : MonoBehaviour
{
public GameObject target; /// <summary>
/// 视线范围-半径
/// </summary>
public float sightViewRadius = 5; /// <summary>
/// 视线范围-欧拉角
/// </summary>
public float sightViewEuler = 120; /// <summary>
/// 画扇形
/// </summary>
/// <param name="radius"></param>
/// <param name="euler"></param>
/// <param name="color"></param>
private void DrawSemicircle(float radius, float euler, Color color)
{
int segments = 10;
float deltaAngle = euler / segments;
Vector3 forward = transform.forward; Vector3[] vertices = new Vector3[segments + 2];
vertices[0] = transform.position;
for (int i = 1; i < vertices.Length; i++)
{
Vector3 pos = Quaternion.Euler(0f, -euler / 2 + deltaAngle * (i - 1), 0f) * forward * radius + transform.position;
vertices[i] = pos;
} // 画圆弧
for (int i = 1; i < vertices.Length - 1; i++)
{
UnityEngine.Debug.DrawLine(vertices[i], vertices[i + 1], color);
} // 画两条边
UnityEngine.Debug.DrawLine(vertices[0], vertices[vertices.Length - 1], color);
UnityEngine.Debug.DrawLine(vertices[0], vertices[1], color); } private bool CanSeeTarget()
{
float distance = Vector3.Distance(transform.position, target.transform.position); Vector3 forward = transform.rotation * Vector3.forward;
Vector3 dir = target.transform.position - transform.position; // 计算两个向量间的夹角,必须归一化normalized
float angle = Mathf.Acos(Vector3.Dot(forward.normalized, dir.normalized)) * Mathf.Rad2Deg; if (distance < sightViewRadius)
{
if (angle <= sightViewEuler / 2)
{
UnityEngine.Debug.Log("CanSeeTarget: {true}");
return true;
}
} UnityEngine.Debug.Log("CanSeeTarget: {false}"); return false; } void Update()
{
DrawSemicircle(sightViewRadius, sightViewEuler, Color.yellow);
CanSeeTarget(); } }

【Unity】检测目标是否在视线范围内(附视线范围扇形画法)的更多相关文章

  1. Unity 检测物体是否在相机视野范围内

    需求: 类似NPC血条,当NPC处于摄像机视野内,血条绘制,且一直保持在NPC头顶. 开始: 网上查找资料,然后编写代码: public RectTransform rectBloodPos; voi ...

  2. [DeeplearningAI笔记]卷积神经网络3.1-3.5目标定位/特征点检测/目标检测/滑动窗口的卷积神经网络实现/YOLO算法

    4.3目标检测 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.1目标定位 对象定位localization和目标检测detection 判断图像中的对象是不是汽车--Image clas ...

  3. MIT挑战(如何在12个月内自学完成MIT计算机科学的33门课程|内附MIT公开课程资源和学习顺序

    译者注:本文译自Scott H. Young的博客,Scott拥有超强的学习能力,曾在12个月内自学完成麻省理工学院计算机科学的33门课程.本文就是他个人对于这次MIT挑战的介绍和总结. 版权声明:本 ...

  4. 电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析)

    电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析) 目录 电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析) 写在前面 正文 电机噪声 谐波的产生 什么 ...

  5. 从零开始学数据分析,什么程度可以找到工作?( 内附20G、5000分钟数据分析工具教程大合集 )

    从零开始学数据分析,什么程度可以找到工作?( 内附20G.5000分钟数据分析工具教程大合集 )   我现在在Coursera上面学data science 中的R programming,过去很少接 ...

  6. C# Windows Phone 8 WP8 高级开发,制作不循环 Pivot ,图片(Gallery)导览不求人! 内附图文教学!!

    原文:C# Windows Phone 8 WP8 高级开发,制作不循环 Pivot ,图片(Gallery)导览不求人! 内附图文教学!! 一般我们在开发Winodws Phone APP 的时候往 ...

  7. jQuery Cookie (内附 上百行的中文使用手册,与 所有的注释中文翻译)

    jQuery Cookie (内附 上百行的中文使用手册,与 所有的注释中文翻译) 博主亲自翻译. 大家多多捧场. 更多资源请点击"查看TA 的资源" .全场通通 2积分. htt ...

  8. UE4如何检测目标在锥形视野内

    转自:http://blog.csdn.net/l346242498/article/details/70237083 做UE4游戏AI方面经常会遇到一个问题,就是何如判定目标在AI单位的视野范围内, ...

  9. 第十九节、基于传统图像处理的目标检测与识别(词袋模型BOW+SVM附代码)

    在上一节.我们已经介绍了使用HOG和SVM实现目标检测和识别,这一节我们将介绍使用词袋模型BOW和SVM实现目标检测和识别. 一 词袋介绍 词袋模型(Bag-Of-Word)的概念最初不是针对计算机视 ...

  10. 如何用OpenCV自带的adaboost程序训练并检测目标

    参考博文: 1.http://blog.csdn.net/wuxiaoyao12/article/details/39227189 2.http://www.cnblogs.com/easymind2 ...

随机推荐

  1. windows平台下软件最小化后无法打开的解决方法

    今天打开电脑后,双击桌面软件图标,软件启动画面出现,等了几秒后直接最小化窗口,感觉有点奇怪.点击任务栏图标后没有反应,软件界面没出现. 以为软件是不是安装破损什么的,重新安装后问题依旧,奇怪,究竟是什 ...

  2. Docker 使用阿里云加速拉取官方镜像

    首先登陆阿里云容器镜像服务控制台,在左侧导航栏选择镜像工具 > 镜像加速器,在镜像加速器页面获取镜像加速地址. 例如: 加速器地址:[系统分配前缀].mirror.aliyuncs.com 配置 ...

  3. 样本方差S²中为什么是乘以1/(n-1)或者说除以n-1?贝塞尔校正,无偏估计

    样本方差S²中为什么是乘以1/(n-1)或者说除以n-1?贝塞尔校正,无偏估计 前言:重在记录,可能出错. 先看样本方差的公式如下: S2=1n-1∑i=1n(Xi-X¯)2=1n-1(∑i=1nXi ...

  4. .net基础—多线程(一)

    基本概念 进程 打开任务管理器,从任务管理器里面可以看到当前所有正在运行的进程.那么究竟什么是进程呢? 进程(Process)是操作系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行 ...

  5. WebAPI :Get、Post、Delete、Put

    public class RestClientMethod { /// <summary> /// 请求服务器地址 /// </summary> public string B ...

  6. java 动手动脑 方法重载

    如下代码://MethodOverload.java //Using overloaded methods package HJssss; public class zhuce { public st ...

  7. 实现一个网页同时调用多个倒计时 jquery/js

    最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js2 var plugJs={ stamp:0, tid:1, stam ...

  8. 关于promise经典面试题

    这里涉及到同步和异步的问题

  9. 2022-04-15内部群每日三题-清辉PMP

    1.由于关键路径上一个任务估计错误,项目落后于进度,项目经理应该怎么做? A.向客户解释这个问题,并告知他们预计将延期多长时间. B.要求团队成员向客户解释为什么会错误估计该任务. C.分析快速跟进或 ...

  10. t:datagrid 行编辑 类型备份

    如编辑文本类型: <t:dgCol extendParams="editor:'text'" /> 如编辑数值类型: <t:dgCol extendParams= ...