news 2026/5/1 10:55:00

swift中arview配置3d物体的碰撞事件,一定要配置name

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
swift中arview配置3d物体的碰撞事件,一定要配置name

给3D物体添加碰撞组件,然后在给ARView配置订阅碰撞事件,并且一定要给3D对象实体配置name属性,不然不会触发碰撞订阅事件!!!!

// 创建红色方块在图片中心 func imageCenterBox(anchor: ARImageAnchor, session: ARSession) { print("创建红色方块在图片中心") if let arView = arView { // mesh是网格 let mesh = MeshResource.generateBox(size: 0.02) // matrial 是素材材质 let material = SimpleMaterial(color: .red, roughness: 0.5, isMetallic: true) // 红色方块实例 let boxEntity = ModelEntity(mesh: mesh, materials: [material]) // 将红色方块添加到中心位置,并且在y轴向上 boxEntity.position = [0, 0.01, 0] // 创建碰撞形状 let collisionShape = ShapeResource.generateBox(size: [0.02, 0.02, 0.02]) // 添加碰撞组件:可以用多个碰撞形状 boxEntity.components.set(CollisionComponent(shapes: [collisionShape])) // 必须配置,不然不会触发碰撞事件 boxEntity.name = "boxentity" // 创建锚点实例 let anchorEntity = AnchorEntity(anchor: anchor) // 锚点添加模型 anchorEntity.addChild(boxEntity) // 视图添加锚点 arView.scene.addAnchor(anchorEntity) } }

配置订阅碰撞事件:

// 收集碰撞事件的订阅,否则会不知道碰撞事件 private var cancellables = Set<AnyCancellable>() // 添加碰撞检测事件监听订阅消息 self.arView?.scene.subscribe(to: CollisionEvents.Began.self) { [weak self] event in // 处理碰撞事件 self?.onCollision(event) }.store(in: &cancellables)

cancellables是啥?

cancellables是可取消的,是框架中管理订阅生命周期的关键容器

在swift中,当你订阅一个发布者Published时,会返回一个AnyCancellable对象,这个对象需要保留,否则订阅会被理解取消。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:19:11

【GraphQL + PHP 文档革命】:为什么大厂都在用Schema驱动文档?

第一章&#xff1a;GraphQL PHP 接口文档的现状与挑战在现代 Web 开发中&#xff0c;API 文档的清晰性与可维护性直接影响前后端协作效率。当使用 PHP 构建后端服务并引入 GraphQL 作为查询语言时&#xff0c;传统的 RESTful 文档工具&#xff08;如 Swagger/OpenAPI&#xff…

作者头像 李华
网站建设 2026/5/1 9:56:54

为什么你的服务还不支持HTTP/3?(深度剖析协议兼容性三大瓶颈)

第一章&#xff1a;为什么你的服务还不支持HTTP/3&#xff1f;HTTP/3 作为下一代互联网传输协议&#xff0c;正在被越来越多的主流服务采用。它基于 QUIC 协议&#xff0c;解决了 HTTP/2 在多路复用中仍存在的队头阻塞问题&#xff0c;并将传输层从 TCP 迁移到 UDP&#xff0c;…

作者头像 李华
网站建设 2026/5/1 6:04:10

leetcode155 最小栈(Java)

思路&#xff1a;创建两个栈&#xff0c;一个用来“正常进出”&#xff0c;另一个记录“当前最小值”一、关于 “方法名重复会不会冲突”原因是&#xff1a;MinStack 类中的 push/pop 是自定义方法&#xff0c;而 stack1/stack2 是类内部的 Stack 对象 —— 二者属于不同的 “作…

作者头像 李华
网站建设 2026/5/1 6:08:03

BI 到底是什么,看看这篇文章怎么说

随着数据价值得到了认可&#xff0c;数据开始成为个人、企业乃至国家的重要战略资产&#xff0c;但数据资产不能直接产生价值&#xff0c;而是需要通过数据分析、数据可视化等数据处理手段将数据转化为信息和知识&#xff0c;才能进行资产的价值化&#xff0c;这时候商业智能BI…

作者头像 李华
网站建设 2026/5/1 7:19:59

《Flutter 工程化实践:从项目结构到 CI/CD 全链路落地》

引言随着 Flutter 在企业级应用中的普及&#xff0c;单纯掌握 UI 开发已远远不够。一个高质量的 Flutter 项目&#xff0c;需要具备清晰的架构分层、规范的代码风格、完善的测试体系、自动化的构建流程以及高效的团队协作机制。然而&#xff0c;许多团队在将 Flutter 从“Demo”…

作者头像 李华
网站建设 2026/5/1 7:07:52

吊舱激光测距模块概述

吊舱的激光测距模块是实现目标精确定位的核心。它通过发射激光并接收从目标反射的回波&#xff0c;利用时间差计算距离&#xff0c;其性能直接影响整个系统的可靠性。下面的表格整理了该模块的几个关键技术要点&#xff1a;模块如何运行&#xff1a;与吊舱系统深度协同激光测距…

作者头像 李华