当前位置: 首页 > 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;}}}}


http://www.mrgr.cn/news/135.html

相关文章:

  • 选择Linux发行版:就像选宠物,你准备好了吗?
  • 不同路径 II[中等]
  • Kali Linux 命令大全
  • C/C++ 不定参函数
  • 模拟实现简单栈和队列
  • RabbitMQ-消息队列延迟队列一
  • 精度±0.1g火试金自动化系统中的失重秤如何为冶金行业带来革命性提升
  • 加密软件怎么保证文件在外发中不会泄露
  • Mac系统如何下载安装Photoshop软件mac的新版指南!
  • [卷积神经网络]YOLOv10论文解读
  • 大模型面试问题记录
  • 日常问题笔记1
  • 关于Qt的系统总结
  • Linux学习记录(十一)———进程间的通信(消息队列)
  • 鸿蒙(API 12 Beta3版)【分段式拍照】媒体相机开发指导(ArkTS)
  • QT的基础数据类型(上)
  • Oracle之触发器
  • 博世(BOSCH)× Milvus:智能驾驶领域的数据挖掘革新
  • 远程ubuntu 20.04服务器运行python+selenium+pyautogui 爬虫解决方案
  • 07结构型设计模式——装饰器模式