【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 ...
随机推荐
- Telnet登陆网络设备执行命令脚本
# !/usr//bin/python3 # -*- coding:UTF-8 -*- from telnetlib import Telnet import time, os, datetime, ...
- reids哨兵机制
宏观上的哨兵机制 监控:哨兵不断的检查master和slave是否正常的运行. 通知:当监控的某台Redis实例发生问题时,可以通过API通知系统管理员和其他的应用程序. 自动故障转移:如果一个mas ...
- Idea报错:Command line is too long.
https://blog.csdn.net/qq_40682764/article/details/109215368 run–>edit configurations–>你的项目–> ...
- esxi虚拟机定时创建快照
1.vim-cmd vmsvc/getallvms 列出所有虚拟机信息 2.获取需要备份的虚拟机的Vmid 3.执行快照 vim-cmd vmsvc/snapshot.create Vmid $( ...
- padding&margin
margin是盒子的外边距,即盒子与盒子之间的距离,而padding是内边距,是盒子的边与盒子内部元素的距离. 鞋盒里面的鞋到 盒子的距离设置为 padding ,而 鞋盒到鞋架的距离设置为margi ...
- 多线程学习(第二天)Java内存模型
一.内存模型基础 Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明. 如果编写多线程程序的Java程序员不理解隐式进行的线程之间通信的工作机制,很可 ...
- java基于ssm框架开发的公交查询系统源码公交系统源码公交路线查询项目有论文
简介 java基于ssm的公交路线查询系统,用户可以查询公交站点公交车路线以及公交换乘方案,还可以查看公交车路线地图,以及该站点所有的公交车路线. 演示视频: https://www.ixigua.c ...
- 一些test短代码
#include <stdio.h> int main(){ char ray_tx_pwr[2][3]={{1,2,3},{4,5,6}}; int i = 0; printf(&quo ...
- 访问远程服务-RPC 与 REST
方法调用 所做的传递参数.传回结果都依赖于栈内存.所以Caller 调用者 Callee 被调用者应该同属一个进程,拥有相同的 栈内存, 进程间通信(Inter-Process Communicati ...
- Nmap常见命令
一测试环境 靶机:metasploitable2-linux [下载地址] IP:192.168.88.128 攻击机: kali IP :192.168.88..131 二 Nmap命令 ...