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

岳阳县住房和城乡建设局网站怎么发布信息到百度

岳阳县住房和城乡建设局网站,怎么发布信息到百度,百年建筑网官网,新手建设网站的步骤Unity开发ARFoundation相关应用首先安装ARFoundation包 然后设置XR 1.基础AR场景框架搭建 2.一个基本的点击克隆物体到识别的平面脚本 挂在XROrigin上 脚本AppController 脚本说明书 ## 业务逻辑 AppController 脚本旨在实现一个基本的 AR 应用程序功能:用户通过…

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 List<ARRaycastHit> ManyHits;//存储很多个 撞击物体后的相关信息private ARRaycastManager OneRaycastManager;//存储射线发射器组件private GameObject TempObj = null;//用户点击地面后!存储克隆在地面上被放置的物体void Start(){ManyHits = new List<ARRaycastHit>();//声明投射OneRaycastManager = this.gameObject.GetComponent<ARRaycastManager>();//获取脚本所在物体的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.yayakq.cn/news/737796/

相关文章:

  • 小型网站建设步骤网络公司做网站
  • 什么是网站建设规划书沈阳工程建设招标网
  • 微信网站上传图片企业网站建设方案服务
  • 微信公众号网站开发注意舟山普陀区建设局网站
  • 宿迁558网络专业做网站小米发布会官网
  • 云南省建设执业注册管理中心网站免费的网站有哪些
  • 网站维护预算在哪些网站可以发布推广信息
  • 网站等保需要几年一做网站开发公司挣钱吗
  • 网站工程师是做什么的软件开发和大数据哪个前景好
  • 宜春做网站的联系电话蒙古文网站建设
  • 廊坊哪里做网站好杭州响应式建站价格
  • 网站建设中 提示互助网站建设公司
  • 深圳html5网站建设织梦 网站模板
  • 不做网站只做推广可以么奉贤做网站制作
  • 做的网站底部应该标注什么意思网站安全检测报告
  • 网站设计网站公司融资平台有哪些
  • php网站配置说明深圳seo关键词优化外包公司
  • 建设网站首页应该采用软件下载网站怎么赚钱
  • 临淄网站设计自助网站建设技术支持
  • 网站建设的技术方案模板网站色哦优化8888
  • 德源网站建设电脑版百度网盘
  • 免费企业营销网站制作哪里有前端技术培训
  • 企业网站多少钱一年wordpress 手机 模板
  • 5118网站是免费的吗佛山 两学一做 网站
  • 外贸型网站建设的基本流程做平台网站需要多少钱
  • 做网站公司的排名广州市门户网站建设品牌
  • 看一个网站是哪里做的王也平
  • 网站商品图片尺寸定制建站公司
  • 做的最好的相亲网站网站专业术语中SEO的意思是
  • 机械设计师接私活的网站网站流量如何赚钱