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

给公司做企业网站多网合一网站平台建设

给公司做企业网站,多网合一网站平台建设,房地产项目开发流程,北京企业公司Unity开发ARFoundation相关应用首先安装ARFoundation包 然后设置XR 1.基础AR场景框架搭建 2.一个基本的点击克隆物体到识别的平面脚本 挂在XROrigin上 脚本AppController 脚本说明书 ## 业务逻辑 AppController 脚本旨在实现一个基本的 AR 应用程序功能#xff1a;用户通过…Unity开发ARFoundation相关应用首先安装ARFoundation包 然后设置XR 1.基础AR场景框架搭建 2.一个基本的点击克隆物体到识别的平面脚本 挂在XROrigin上 脚本AppController 脚本说明书 ## 业务逻辑 AppController 脚本旨在实现一个基本的 AR 应用程序功能用户通过触摸屏幕选择位置然后在这个位置上克隆并放置一个预制的游戏对象。这个功能在 AR 应用程序中很常见例如在游戏、教育或设计应用程序中用户可以在现实世界的位置上放置虚拟物体。 代码 using JetBrains.Annotations; using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; using UnityEngine.XR.ARFoundation; using UnityEngine.XR.ARSubsystems;[RequireComponent(typeof(ARRaycastManager))]//当你在脚本中使用 [RequireComponent] 属性时Unity编辑器会在编辑模式下自动检查并确保该组件存在于游戏对象上。如果该组件不存在Unity会提示你添加它。这有助于避免在运行时出现错误因为如果脚本依赖于某个组件而该组件没有出现在游戏对象上那么在游戏运行时尝试访问该组件的任何尝试都会导致错误或异常。 public class AppController : MonoBehaviour {// 主要实现了用户点击位置克隆游戏物体//1.获取用户点击位置发射射线碰撞到平面返回坐标克隆物体在此public GameObject OnePrefab;//将来被克隆放置的预制体static ListARRaycastHit ManyHits;//存储很多个 撞击物体后的相关信息private ARRaycastManager OneRaycastManager;//存储射线发射器组件private GameObject TempObj null;//用户点击地面后存储克隆在地面上被放置的物体void Start(){ManyHits new ListARRaycastHit();//声明投射OneRaycastManager this.gameObject.GetComponentARRaycastManager();//获取脚本所在物体的ARRaycastManager组件}// 获取用户点击行为void Update(){if (Input.touchCount 0)//如果点击0{return;}// 获取第一个触摸点的信息Touch OneTouch Input.GetTouch(0);//获取第一个触摸点//开始声明射线然后投射出去物理引擎是用physic.Raycast。这里用ARRaycastManager投射就像人扔东西一样//一边发射一边判断是否射中平面if (OneRaycastManager.Raycast(OneTouch.position, ManyHits, TrackableType.PlaneWithinPolygon | TrackableType.PlaneWithinBounds)){//AR射线管理器组件向触摸点的位置发射一根射线并且击中平面射线追踪类型为虚拟多边形平面目标类型Debug.Log(射线发射成功 /射线击中了边界内的平面开始处理命中结果);Pose FirstHitPose ManyHits[0].pose;//存储第一个击中目标信息包括对方名字、交叉点坐标//开始克隆if (TempObj null){TempObj GameObject.Instantiate(OnePrefab, FirstHitPose.position, FirstHitPose.rotation);}else{TempObj.transform.position FirstHitPose.position;}//为了防止重复点击重复克隆可以判断TempObj 是不是空}} }## 程序逻辑 1. **组件依赖**    - 脚本使用 [RequireComponent(typeof(ARRaycastManager))] 属性来确保游戏对象上存在 ARRaycastManager 组件。这个组件是 AR Foundation 的一部分用于处理射线检测和跟踪。 2. **变量声明**    - OnePrefab 是一个公共变量用于存储将要被克隆的预制体。    - ManyHits 是一个静态列表用于存储射线检测的结果。    - OneRaycastManager 是 ARRaycastManager 类型的变量用于存储获取到的 ARRaycastManager 组件。    - TempObj 是一个 GameObject 类型的变量用于存储克隆后放置在地面上的物体。 3. **初始化**    - 在 Start 方法中脚本初始化 ManyHits 列表并获取 ARRaycastManager 组件。 4. **射线检测与克隆**    - 在 Update 方法中脚本首先检查是否有触摸事件发生Input.touchCount。    - 如果有触摸事件脚本获取第一个触摸点的信息并使用 OneRaycastManager 进行射线检测。    - 如果射线检测成功击中平面TrackableType.PlaneWithinPolygon | TrackableType.PlaneWithinBounds脚本将获取第一个命中点的 Pose。    - 脚本随后检查 TempObj 是否为空。如果是空的意味着这是第一次点击脚本将实例化一个新的游戏对象并放置在命中点位置。    - 如果 TempObj 不为空脚本将更新其位置到新的命中点。 ## 核心算法介绍 1. **射线检测**    - ARRaycastManager.Raycast 方法用于从用户触摸点发射射线并检测射线是否击中了 AR 场景中的平面。    - 射线检测的类型由 TrackableType 参数指定这里使用了 PlaneWithinPolygon 和 PlaneWithinBounds 来限制射线只检测用户定义的特定平面区域。 2. **克隆与放置**    - 脚本使用 GameObject.Instantiate 方法来克隆预制体并使用 Pose 来设置克隆物体的位置和旋转。    - 通过检查 TempObj 的状态脚本确保用户不会重复克隆物体除非之前的克隆物体被移除或销毁。 ## 使用说明 - 将 AppController 脚本附加到一个游戏对象上并确保该游戏对象上有 ARRaycastManager 组件。 - 在 Unity 编辑器中将你希望克隆的预制体拖拽到 OnePrefab 变量上。 - 运行应用程序通过触摸屏幕来选择位置并放置克隆的物体。 ## 注意事项 - 确保你的 AR 设备或模拟器已经正确设置并支持 AR Foundation。 - 调整射线检测的类型和参数以适应你的应用程序需求。 - 如果需要限制克隆物体的数量可以添加额外的逻辑来管理 TempObj 的生命周期。 TrackableType.PlaneWithinPolygon 是什么意思 TrackableType.PlaneWithinPolygon 是 Unity AR Foundation 中的一个枚举值用于指定射线检测Raycast的目标类型。这个枚举值是 TrackableType 的一个成员它定义了射线检测可以击中的跟踪目标类型。 在 AR 应用中平面Plane是指由 AR 系统识别的环境表面通常是水平或垂直的表面如地板、墙壁或桌面。PlaneWithinPolygon 特指那些被定义为多边形边界内的平面。这意味着射线检测将只寻找并返回位于用户定义的多边形区域内的平面。 使用 TrackableType.PlaneWithinPolygon 可以限制射线检测的结果使其只返回特定区域内的平面这对于某些特定的 AR 场景和交云操作非常有用。例如你可能只想在用户放置的特定区域如一个虚拟房间的地面上进行交互而不是任何可见的平面。 在实际使用中你可以将 TrackableType.PlaneWithinPolygon 作为参数传递给 ARRaycastManager.Raycast 方法来指定射线检测的类型。这样只有当射线击中了多边形区域内的平面时射线检测才会返回命中结果。
http://www.zqtcl.cn/news/488985/

相关文章:

  • 自己做的网站怎么加入微信支付综合性门户网站列举
  • 哪个网站 可以做快递单录入网站怎么做抽奖
  • 网站设计培训班网站域名费用怎么做分录
  • 济南做网站哪里好惠州附近公司做网站建设多少钱
  • 使用oss做静态网站网站广告牌制作教程
  • 外贸看的英文网站公众号模板编辑器
  • 做网站的数据库的步骤阅读网站模板下载
  • 建设网站要钱吗个人养老金制度是什么意思
  • 做h5的网站页面设计软文素材网站
  • 黄冈网站推广软件费用是多少手机网站弹出层插件有哪些
  • wordpress文章链接怎么改怎么优化关键词排名优化
  • 专业做包包的网站好产品网站做营销推广
  • 网站刚建好怎么做能让百度收录湖北黄石网站建设
  • 网站建设拾金手指下拉二一wordpress 插件破解
  • 天津做网站外包公司有哪些美橙互联网站
  • 石家庄网站建设蓝点办公室装修工程
  • 申请网站空间就是申请域名建设机械网站咨询
  • 做美食网站有哪些网站怎么做自响应
  • 衡水网站建设维护宝安官网网站建设比较好的
  • 网站建设的审批重庆建设工程信息网30系统
  • 泉州软件开发培训机构怎么做网站内部链接的优化
  • 网站定位是什么中国it外包公司排名
  • 洛阳微信平台网站建设网站成功案例分析
  • 网站建设在淘宝怎么分类深圳软件开发招聘信息
  • .net如何做网站个人网站的制作
  • 网站优化排名推广站长统计官方网站
  • 长沙wap网站建设wordpress 用户 函数
  • 淮安做网站的公司有哪些公司目前上海有几个区
  • 怎么做自动跳转网站建站之星 discuz
  • 网站建设开发合同范本页面设计有哪几种风格