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

网站头部导航样式51视频

网站头部导航样式,51视频,响应式网站一般做几个尺寸,如何用浏览器访问本地的wordpress前言 需要实现的功能是通过一个专门的检测摄像头将出现在摄像头画面内的敌方单位检测出来,并通过框选的UI框在画面中标记出来。检测摄像头支持自动检测和手动控制检测,同时需要实现锁定模式,检测到一个敌方单位直接锁定到对象上等功能。 效…

前言

需要实现的功能是通过一个专门的检测摄像头将出现在摄像头画面内的敌方单位检测出来,并通过框选的UI框在画面中标记出来。检测摄像头支持自动检测和手动控制检测,同时需要实现锁定模式,检测到一个敌方单位直接锁定到对象上等功能。

效果

自动检测并锁定:
在这里插入图片描述

自动检测并标注:
在这里插入图片描述

实现

主要的实现思路通过检测摄像头中调用 Physics.OverlapSphere函数,处理检测的层级存在的敌方单位后根据扫描角度筛选出画面中的敌方单位,然后通过 lookCam.WorldToScreenPoint和RectTransformUtility.ScreenPointToLocalPointInRectangle函数计算出敌方单位在摄像头画面中的位置,在对应位置上添加选框UI即可。

UI搭建

敌方单位的标注就用一个Image对象来处理,所以UI搭建比较简单如下图:
在这里插入图片描述

不过MarkerCanvas的Render Mode就将其设置为Screen Space-Camera模式,RenderCamera就是检测摄像头。

检测配置

    [Header("检测的层级")]public LayerMask scanLayer = 1;[Header("检测半径(远近)")]public float viewRadius = 10000;[Header("检测角度范围(扇形)")]public float detectionAngle = 90;[Header("检测旋转速度")]public float rotationSpeed = 5.0f; // 旋转速度[Header("是否自动旋转检测")]public bool isAutoScan = true;bool AutoDoing = false;float resumeDura = 5; //无目标时,无手动操作5秒后自动扫描。Vector3  AutoDir = Vector3.up;[Header("是否自动锁定")][Tooltip("检测到后会锁定到对象,只会有一个锁定对象")]public bool isTargetLock = false;[Header("标记")]public TargetMarker marker;

这些是Inspector中暴露出来用于配置的变量,效果如下:
在这里插入图片描述

其中检测的层级可以多选:
在这里插入图片描述

检测逻辑

    float angle = Mathf.Deg2Rad * (detectionAngle * 0.5f);Collider[] hitColliders = Physics.OverlapSphere(transform.position, viewRadius, scanLayer);targets.Clear();foreach (var hitCol in hitColliders){Vector3 dir = (hitCol.transform.position - transform.position).normalized;if (Mathf.Acos(Vector3.Dot(transform.forward, dir)) > angle)continue;targets.Add(hitCol.transform);// 处理检测到// Debug.Log(hitCol.gameObject.name);if (isTargetLock){scanState = false;nowLock = hitCol.transform;DoLockAnima();break;}}

调用 Physics.OverlapSphere函数找到scanLayer层级的对象,然后判断画面角度找出敌方单位。

标记实现

   if (LockTran != null){if (isInFront()){Vector2 mScreenPos = lookCam.WorldToScreenPoint(LockTran.position);Vector2 mRectPos;RectTransformUtility.ScreenPointToLocalPointInRectangle(ParentTran, mScreenPos, lookCam, out mRectPos);Rtran.localPosition = mRectPos + Offset;DisScale = ScaleRate / Vector3.Distance(LockTran.position, lookCam.transform.position);Rtran.localScale = Vector3.one * (DisScale < MinScale ? MinScale : DisScale > MaxScale ? MaxScale : DisScale);//Rtran.localScale = Vector3.one;}elseRtran.localScale = Vector3.zero;}elseRtran.localScale = Vector3.zero;

其中LockTran 就是这边标记框需要标记的对象,详情可查改该博客“Unity3d C# 实现UGUI面板跟随标注3D模型功能”。
通过localScale 同时设置了标记框的远小近大,其思路参照这篇博文“Unity3d C#实现三维场景中图标根据相机距离动态缩放功能”。

源码

https://download.csdn.net/download/qq_33789001/90056743

http://www.yayakq.cn/news/644107/

相关文章:

  • 天津有哪些有名的网站建设公司东莞公司制作网站
  • 什么样的网站可以做站群网站建设一般步骤
  • 八里河风景区网站建设设计概述小鱼儿外贸建站
  • 网站建设一般收费个人网站可以收费吗
  • 做正规小说网站asp.net网站制作教程
  • 什么网站可以做平面设计赚钱游戏代理免费加盟
  • 成都购物网站建设南山区网站建设
  • 成都网站推广优化公司淘宝运营多少钱一个月
  • 关于建设饮食与健康网站的意义室内装修培训
  • 深圳罗湖网站建设公司原始传奇网页版
  • 网站内的地图导航怎么做的网站备案邮寄资料
  • 网站个人简介怎么做海南网新闻最新消息今天
  • 部门定制网站建设公司网站招生宣传怎么做
  • 网页设计与网站建设连接数据库别墅庭院园林景观设计公司
  • 朝阳周边做网站的公司wordpress超好看主题
  • 网站的建站流程重庆公众信息网
  • 在网上做游戏网站违法吗网站建设制作品牌公司
  • 国内最大c2c网站宝塔建站工具
  • 怎么用dw做简单网站沈阳网站建设024w
  • 厦门网站建设2015通过命令上传wordpress
  • 网站设计要求有哪些巨蟹座适合网站建设吗
  • 网站开发辛苦吗网站建设合同要缴纳印花税吗
  • 领导不愿意做招聘网站怎么办wordpress发布心情
  • 分析学生做网站石家庄模板建站行业解决方案
  • 小榄网站东莞市招标网
  • 如何建立一个网站收会员费班级优化大师免费下载安装
  • 专业网站建设顾问南宁广告网页设计招聘
  • 成都市制作企业网站怎样做国际网站平台
  • 网站不想备案wordpress格子主题
  • 用ps做三网站横幅互联网设计是什么