Unity实现扇形小地图的区域检测

2023-11-04

说明:

最近接到一个需求,在一个雷达界面(扇形UI)的界面上显示出三维场景中真实的物体显示情况,我的思路就是一个三维场景某物体的位置映射到二维UI界面上。

实现思路:

  • 物体到扇形原点的距离需要小于扇形半径的距离,否则就不在扇形范围内

  • 物体与扇形原点的向量与扇形圆心的正方向向量的夹角要小于规定夹角的二分之一
    满足以上两点就满足当前的物体在扇形范围内

  • 使用向量的叉乘判断物体在扇形圆心的左侧还是右侧

  • 三维扇形需要对应在UI扇形上将计算的角度和相对半径计算好
    满足以上两点满足三维扇形和UI扇形映射关系就计算好了

代码如下:

 void Sector()
    {
        Vector3 playerPos=this.transform.position;
        Vector3 enemyPos=enemy_Obj1.transform.position;

        float distance=Vector3.Distance(playerPos,enemyPos);

        //玩家相对于目标的向量
        Vector3 srcLocalVect = enemyPos - playerPos;
        srcLocalVect.y = 0;

        //获取主角正前方的一个点
        Vector3 forwardPlayerPos =transform.forward + playerPos;

        //获取正方向向量
        Vector3 forwardVect = forwardPlayerPos - playerPos;
        forwardPlayerPos.y = 0;

        //计算角度
        float angle = Vector3.Angle(srcLocalVect, forwardVect);

        //Debug.Log("当前的值为:"+ Vector3.Cross(playerPos, enemyPos));

        if (distance<minDis&&angle<minAngle/2)
        {
            if (Vector3.Cross(playerPos,enemyPos).y>0)
            {
                angle *= -1;
            }

           float x = UICenterPos.localPosition.x + radius * radiusScale * Mathf.Sin(angle * 3.14f / 180f);

        float y = UICenterPos.localPosition.y + radius * radiusScale * Mathf.Cos(angle * 3.14f / 180f);

        radarTarget_TF.localPosition = new Vector3(x, y, 0);
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity实现扇形小地图的区域检测 的相关文章

  • c#获取cpu序列号

  • Unity 粒子特效、材质发光 HDR ShaderGraph图文教程[完成lit发光设置]

    效果如图 准备工作 在hdr模式下 关闭Directional Light 相机设置 移动球挂一个点光源作为子节点 设置自行调节 0 创建移动球的材质及shader shader gt 在Project Create Shader Grap
  • Unity动画系统详解

    目录 动画编辑器 编辑器面板 动画复用 前言 人形重定向动画 Humanoid 通用动画 Generic 旧版本动画 Legacy 动画控制器 系统状态 切换条件 状态机脚本 IK动画 反向动力学 BlendTree 混合树 Animato
  • UnityVR--组件3--Line Renderer--线性渲染

    目录 线性渲染组件简介 绘制线条Line Renderer组件介绍 绘制拖尾Trail Renderer组件介绍 应用1 使用Line Renderer绘制线段 应用1实现 使用系统工具或自定义工具绘制线段 应用2 Trail Render
  • unity工程崩溃资源找回

    1 Unity死机未保存场景 当你在Unity中编辑场景 突然死机时 可以在项目文件目录中找到Temp文件夹 双击文件夹 找到 Backupscenes文件夹 把后缀为 backup的文件后缀改为 unity 然后拖进Unity的Proje
  • 【IMGUI】 各种辅助类 EditorGUIUtility、EditorUtility、GUIUtility、GUILayoutUtility

    EditorGUIUtility class in Editor 继承自 GUIUtility EditorGUI 的各种辅助程序 EditorGUIUtility currentViewWidth 我尝试打印了下这个值和position
  • unity3d大型互动照片墙

    1 本次应客户需求 制作一个大型照片墙互动 输出分辨率为9600 4320 注 unity3d官方推荐最大分辨率为8192 3686 4 经过现场长达24小时暴力测试中途未发生问题 姑且判定可以达到正常标准 废话不多说 先上效果 unity
  • 【Unity】按Esc进入操作菜单

    本文章是基于如下视频的自我总结 https www youtube com watch v JivuXdrIHK0 步骤如下 1 在Canvas 界面添加一个Panel Panel中添加一个按钮 调整按钮的大小为合适大小 调整字体的大小为合
  • unity 性能查看工具Profiler

    文章目录 前言 profiler工具介绍 菜单栏 帧视图 模块视图 模块详细信息 通过profiler分析优化游戏性能 最后 前言 每次进行游戏优化的时候都用这个工具查看内存泄漏啊 代码优化啊之类的东西 真的好用 但是之前也就是自己摸索一下
  • Unity旋转以及万向锁问题

    我之前研读了一些关于unity旋转相关的博客 一直想抽个时间写个总结 但是由于实习太忙一直没有写 趁着今天请了假晚上有时间把这段时间一些学习心得写出来 Unity inspector面板中的Rotation 在unity中 想必大家最先接触
  • unity dots jobSystem 记录

    Looking for a way to get started writing safe multithreaded code Learn the principles behind our Job System and how it w
  • unity3d image组件不显示

    需要将UI组件放到画布下面
  • mixamo根动画导入UE5问题:滑铲

    最近想做一个跑酷游戏 从mixamo下载滑铲动作后 出了很多动画的问题 花了两周时间 终于是把所有的问题基本上都解决了 常见问题 1 动画序列 人物不移动 2 动画序列 人物移动朝向错误 3 蒙太奇 人物移动后会被拉回 4 蒙太奇 动画移动
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • U3D游戏开发中摇杆的制作(UGUI版)

    在PC端模拟摇杆 实现玩家通过控制摇杆让玩家移动 以下是完整代码 using System Collections using System Collections Generic using UnityEngine using Unity
  • 游戏开发常见操作梳理之NPC任务系统

    多数游戏存在任务系统 接下来介绍通过NPC触发任务的游戏制作代码 using System Collections using System Collections Generic using UnityEngine
  • 游戏开发创建操作之玩家信息系统的建立

    游戏一般都需要玩家信息系统 那么我们应该如何搭建玩家信息系统 接下来我将展示一种简单的方法 完整代码如下 using System Collections using System Collections Generic using Uni
  • 游戏开发常见操作梳理之小地图的制作

    游戏中一般存在小地图系统 实际上就是设置一个新的摄像机放置在玩家的正上方 然后在小地图上显示新摄像机看见的东西就可以了 在小地图上一般存在放大地图和缩小地图的按钮可以方便放大和缩小地图 这些操作是如何实现的呢 接下来直接上核心代码 usin
  • 游戏开发之常见操作梳理——武器装备商店系统(NGUI版)

    游戏开发中经常出现武器商店 接下来为你们带来武器装备商店系统的具体解决办法 后续出UGUI Json版本 敬请期待 武器道具的具体逻辑 using System Collections using System Collections Ge

随机推荐

  • win7系统下利用VS Code断点调试C/C++源码

    1 系统配置 win7 64系统 2 VS Code版本 1 70 2 System setup 3 安装包下载官网 Visual Studio Code July 2022 由于计算机是win7版的 故选择能支持win7系统版本的VS C
  • Rancher和K8s关系

    产品介绍 K8s Kubernetes 为企业提供了一种一致的方式来管理任何计算基础架构 百度百科 Rancher则是用于管理位于任何位置的Kubernetes集群的完整平台 如果用户是自己手动部署K8s集群 流程还是比较复杂的 需要掌握一
  • Idea中打包jar包(mavan项目)

    一 操作环境 IntelliJ IDEA 2020 3 3 Win10 Mavan项目 二 操作 1 确保打包方式为jar 打开pom xml文件 找到
  • MAC搜索不到蓝牙设备解决方案

    简单的解决方案就是 在打开的窗口中找到 com apple Bluetooth plist 删掉 如果还看到 com apple Bluetooth plist lockfile 也一并删 如下图 然后重启 也可以参考 http bbs p
  • [Unity][安卓]Unity和Android Studio 3.0 交互通讯(1)Android Studio 3.0 设置

    安卓 Android Studio 3 0 JDK安卓环境配置 2017 10 http blog csdn net bulademian article details 78387052 安卓 Android Studio 3 0 安装包
  • 计算机中丢失dasfj_v1.2.dll,S7DasBrMenu.dll(修复丢失S7DasBrMenu.dll文件)V1.0 正式版

    S7DasBrMenu dll 修复丢失S7DasBrMenu dll文件 是针对S7DasBrMenu dll文件的一款很好用的修复工具 使用电脑时遇到S7DasBrMenu dll文件丢失怎么办 没关系 小编带来的这款S7DasBrMe
  • 深入理解设计原则之KISS/YAGNI/DRY原则【软件架构设计】

    系列文章目录 C 高性能优化编程系列 软件架构设计系列 深入理解设计模式系列 高级C 并发线程编程 如果敌人使你生气 说明你没有胜过他的信心 If the enemy makes you angry that means you have
  • js 判断字符串中是否包含某个字符串

    可通过str includes 和str indexOf 1 includes 语法 arr includes searchElement arr includes searchElement fromIndex 参数说明 参数 描述 se
  • 数据结构-线性结构之线性表

    什么是线性表 线性表 Linear List 由同类型数据元素构成的有序序列的线性结构 1 表中元素个数称为线性表的长度 2 线性表没有元素时 称为空表 3 表起始位置称为表头 表的结束位置称为表尾 线性表的抽象数据类型描述 类型名称 线性
  • 使用maven 打成可提供给第三方使用的jar包

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 集成环境idea 2 目标第三方可直接引入使用 步骤如下 0 组件项目打包一定要把build 元素注释掉 否则别人无法引入 jar包 pom 例子如下
  • Django笔记总结

    1 web框架的本质 web通信流程 web我们这里指的就是通过浏览器去访问服务端 请求页面或者数据的通信方式 属于B S架构 就是我们常见的网站 浏览器与服务端的通信流程 浏览器客户端发送一个请求信息 数据 发送到我们服务端 服务端接受这
  • 使用强随机数

    伪随机数易被攻击者破解而找到其数序生成规律 伪随机数不能用于安全敏感应用 常见安全敏感应用 SessionID的生成 挑战算法中的随机数生成 验证码的随机数生成 生成重要随机文件的文件名 生成密钥相关的随机数等 对于安全敏感应用 应该使用强
  • H3C交换机堆叠(IRF)

    目录 1 IRF简介 1 1 实验环境 1 2 添加交换机 1 3 添加连接线 1 4 启动设备 1 5 修改设备名称 1 6 关闭IRF物理端口 1 7 设置IRF域编号 1 8 设置member成员编号 1 9 配置IRF端口并与物理端
  • 使用ESP8266和Blynk应用程序的远程房间恒温器

    该项目可通过您的手机通过家庭WiFi或移动网络的任何地方控制您的家庭供暖单元 基本上 它可以用远程控制器代替普通的可编程房间恒温器 作为遥控器 它使用安装了Blynk App并配置为可以满足所有需求的智能手机 智能手机和供暖系统之间的通信由
  • Android 9(P)应用进程创建流程大揭秘

    Android 9 P 应用进程创建流程大揭秘 Android 9 P 系统启动及进程创建源码分析目录 Android 9 P 之init进程启动源码分析指南之一 Android 9 P 之init进程启动源码分析指南之二 Android
  • 【面试题】-java分布式及微服务面试题汇总

    目录 1 CAP理论 2 BASE理论 3 接口的幂等性问题 4 消息中间件如何解决消息丢失问题 5 什么是分布式事务 分布式事务的类型有哪些 6 分布式事务的解决方案有哪些 7 Dubbo的服务请求失败怎么处理 10 Soa和微服务架构有
  • 二叉树中序线索化与遍历(c)

    对下图的二叉树进行 1 创建一个带线索域的二叉树 数据类型如下 typedef struct 当 tag 为0时 代表child 正常指向下一个节点 当tag为1时 child为线索 其中 lchild 为指向中序遍历前驱 rchild 为
  • 中级职称的计算机考试题库,中级职称计算机考试模拟题库及答案

    资料仅供参考 中级职称计算机考试模拟题库及答案 1 计算机中数据的表示形式是 C A 八进制 B 十进制 C 二进制 D 十六进制 2 硬盘工作时应特别注意避免 B A 噪声 B 震动 C 潮湿 D 日光 3 下面列出的四种存储器中 易失性
  • 好像还挺好玩的GAN5——Keras搭建COGAN耦合生成式对抗网络

    好像还挺好玩的GAN5 Keras搭建COGAN耦合生成式对抗网络 学习前言 什么是COGAN 神经网络构建 1 Generator 2 Discriminator 训练思路 实现全部代码 学习前言 发现一个挺有意思的结构 可以通过同一个输
  • Unity实现扇形小地图的区域检测

    说明 最近接到一个需求 在一个雷达界面 扇形UI 的界面上显示出三维场景中真实的物体显示情况 我的思路就是一个三维场景某物体的位置映射到二维UI界面上 实现思路 物体到扇形原点的距离需要小于扇形半径的距离 否则就不在扇形范围内 物体与扇形原