【Unity】检测目标是否在视线范围内(附视线范围扇形画法)
- 检测目标是否在视线范围内(附视线范围扇形画法)
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】检测目标是否在视线范围内(附视线范围扇形画法)的更多相关文章
- Unity 检测物体是否在相机视野范围内
需求: 类似NPC血条,当NPC处于摄像机视野内,血条绘制,且一直保持在NPC头顶. 开始: 网上查找资料,然后编写代码: public RectTransform rectBloodPos; voi ...
- [DeeplearningAI笔记]卷积神经网络3.1-3.5目标定位/特征点检测/目标检测/滑动窗口的卷积神经网络实现/YOLO算法
4.3目标检测 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.1目标定位 对象定位localization和目标检测detection 判断图像中的对象是不是汽车--Image clas ...
- MIT挑战(如何在12个月内自学完成MIT计算机科学的33门课程|内附MIT公开课程资源和学习顺序
译者注:本文译自Scott H. Young的博客,Scott拥有超强的学习能力,曾在12个月内自学完成麻省理工学院计算机科学的33门课程.本文就是他个人对于这次MIT挑战的介绍和总结. 版权声明:本 ...
- 电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析)
电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析) 目录 电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析) 写在前面 正文 电机噪声 谐波的产生 什么 ...
- 从零开始学数据分析,什么程度可以找到工作?( 内附20G、5000分钟数据分析工具教程大合集 )
从零开始学数据分析,什么程度可以找到工作?( 内附20G.5000分钟数据分析工具教程大合集 ) 我现在在Coursera上面学data science 中的R programming,过去很少接 ...
- C# Windows Phone 8 WP8 高级开发,制作不循环 Pivot ,图片(Gallery)导览不求人! 内附图文教学!!
原文:C# Windows Phone 8 WP8 高级开发,制作不循环 Pivot ,图片(Gallery)导览不求人! 内附图文教学!! 一般我们在开发Winodws Phone APP 的时候往 ...
- jQuery Cookie (内附 上百行的中文使用手册,与 所有的注释中文翻译)
jQuery Cookie (内附 上百行的中文使用手册,与 所有的注释中文翻译) 博主亲自翻译. 大家多多捧场. 更多资源请点击"查看TA 的资源" .全场通通 2积分. htt ...
- UE4如何检测目标在锥形视野内
转自:http://blog.csdn.net/l346242498/article/details/70237083 做UE4游戏AI方面经常会遇到一个问题,就是何如判定目标在AI单位的视野范围内, ...
- 第十九节、基于传统图像处理的目标检测与识别(词袋模型BOW+SVM附代码)
在上一节.我们已经介绍了使用HOG和SVM实现目标检测和识别,这一节我们将介绍使用词袋模型BOW和SVM实现目标检测和识别. 一 词袋介绍 词袋模型(Bag-Of-Word)的概念最初不是针对计算机视 ...
- 如何用OpenCV自带的adaboost程序训练并检测目标
参考博文: 1.http://blog.csdn.net/wuxiaoyao12/article/details/39227189 2.http://www.cnblogs.com/easymind2 ...
随机推荐
- Odoo编程,说明,功能,文章收藏贴
CN Blog: https://www.cnblogs.com/Firstwing/p/14088500.html #http://blog.sina.com.cn/s/blog_bc7dee2d0 ...
- C# 笔记--Sendkeys winform窗体控件回车及全选
SendKeys.Send() 向活动应用程序发送击键 SendKeys.SendWait() 向活动应用程序发送给定的键,然后等待消息被处理 这两个方法可以发送组合键,需要注意的是字母按键应为小写. ...
- FastReport 单元行自动换行 Table Object AutoSize
FastReport 官方实例138.fr3 有关于单元行自动换行的描述.The table object can grow depends on cells content. Notes:- set ...
- android gradle配置及编译command
build.gradle apply plugin: 'com.android.application' android { compileSdkVersion rootProject.ext.and ...
- window.onerror的总结
// a.js window.onerror = function (message, url, line, column, error) { console.log('log---onerror:: ...
- Safari浏览器如何收藏网页?
Safari浏览器是MacOS所自带的一款功能强劲的浏览器,许多MacOS的用户在使用过Safari浏览器后就不会去下载其他浏览器了.对于很多Mac新手用户来说,如何使用Safari浏览器来收藏喜欢的 ...
- Mybatis实现树状结构查询
1.实体类 @Data public class CourseChapterVO implements Serializable { private static final long serialV ...
- docker 搭建mysql主从复制环境(一主两从)
一主多从配置 服务器规划:使用docker方式创建,主从服务器IP一致,端口号不一致 主服务器:容器名docker-mysql-master,端口3306 从服务器:容器名docker-mysql-s ...
- Docker部署网心云-挣点电费
网心云 是CDN业务的一种,容器魔方 是网心云的容器安装产品,其安装也很简单. 1.启动容器--一行命令 docker run -d --name watchtower --restart alway ...
- Docker学习——多阶段构建(六)
之前的做法 在 Docker 17.05 版本之前,我们构建 Docker 镜像时,通常会采用两种方式: 全部放入一个 Dockerfile 一种方式是将所有的构建过程编包含在一个 Dockerfil ...