当前位置: 首页 > news >正文

Unity 求坐标点在扇形区域内的投影

视频效果:

代码:

    /// <summary>/// 投影在扇形区域内的点/// </summary>/// <param name="targetPos">目标点</param>/// <param name="fanRadius">扇形半径</param>/// <param name="fanAngle">扇形圆心角</param>/// <param name="fanShape">扇形(扇形圆心)</param>/// <returns></returns>private Vector3 GetPosToFanProjection(Vector3 targetPos,float fanRadius,float fanAngle,Transform fanShape){Vector3 leftdir = Quaternion.AngleAxis(-fanAngle/2, fanShape.transform.up)*fanShape.transform.forward;Vector3 rightdir = Quaternion.AngleAxis(fanAngle/2, fanShape.transform.up)*fanShape.transform.forward;Vector3 leftP = fanShape.transform.position + leftdir * fanRadius;Vector3 rightP = fanShape.transform.position + rightdir * fanRadius;float dis = (targetPos - fanShape.transform.position).magnitude;float angle = Vector3.SignedAngle(fanShape.transform.forward, targetPos - fanShape.transform.position,fanShape.transform.up);if (dis > fanRadius){if (Mathf.Abs(angle) < 0.5f * fanAngle){return fanShape.transform.position + (targetPos - fanShape.transform.position).normalized * this.fanRadius;}else{//右顶点if (angle > 0){return rightP;}//左顶点else{return leftP;}}}else{if (Mathf.Abs(angle) < 0.5f * fanAngle){return targetPos;}else{//右边界if (angle > 0){return fanShape.transform.position + rightdir * dis;}//左边界else{return fanShape.transform.position + leftdir * dis;}}}}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 从零开始学数据结构系列之第四章《拓扑排序代码详解》
  • 22 mysql数据库主从搭建
  • 国外机器人相关网站推荐
  • Unity AB包
  • 【计算机网络】网络版本计算器
  • CentOS 7使用RPM安装MySQL
  • Linux 网站服务器的搭建教程
  • js使用run编码计算region的交集并集差集
  • WHAT - 前端跨端识别
  • 图神经网络教程2——循环图神经网络-1
  • Linux ubuntu 使用 wine 安装迅雷不限速版本,并添加快捷方式,解决 desktop 桌面快捷方式不能启动的问题!
  • 鸿蒙关于手机全局本地文件读取,写入
  • The Sandbox 新提案: 2024 年亚洲和拉丁美洲区块链活动预算
  • 一文读懂 服务器
  • Linux搭建环境:从零开始掌握基础操作(二)
  • [ JavaScript ] 数据结构与算法 —— 链表
  • android图片蒙层
  • Cumulo 的 ClojureScript 模块已经成型
  • express如何解决request entity too large问题
  • Iterator 和 for...of 循环
  • JavaScript 基本功--面试宝典
  • javascript 总结(常用工具类的封装)
  • JS数组方法汇总
  • MySQL-事务管理(基础)
  • October CMS - 快速入门 9 Images And Galleries
  • Puppeteer:浏览器控制器
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 从重复到重用
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 深入浅出webpack学习(1)--核心概念
  • 如何正确理解,内页权重高于首页?
  • # wps必须要登录激活才能使用吗?
  • #android不同版本废弃api,新api。
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #图像处理
  • (07)Hive——窗口函数详解
  • (vue)页面文件上传获取:action地址
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (九)One-Wire总线-DS18B20
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (算法)大数的进制转换
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .htaccess配置常用技巧
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET CLR Hosting 简介
  • .net core Redis 使用有序集合实现延迟队列
  • .NET Core引入性能分析引导优化