news 2026/6/16 16:33:47

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/6/16 12:34:52

【紧急预警】物联网安全漏洞频发,部署时必须配置的4道防火墙

第一章&#xff1a;物联网安全现状与挑战 随着物联网&#xff08;IoT&#xff09;设备在智能家居、工业控制、医疗健康等领域的广泛应用&#xff0c;其面临的安全威胁也日益严峻。大量设备因设计初期忽视安全机制&#xff0c;导致暴露在公网中的节点极易成为攻击入口。缺乏统一…

作者头像 李华
网站建设 2026/6/15 4:15:41

为什么顶级团队都在用Laravel 13的多模态校验?这4个优势告诉你答案

第一章&#xff1a;Laravel 13 多模态校验的演进与核心理念Laravel 13 在表单请求校验方面引入了多模态校验机制&#xff0c;标志着从传统单一输入验证向复合型、上下文感知验证体系的重要跃迁。这一演进不仅提升了开发者处理复杂业务逻辑的能力&#xff0c;也增强了应用在面对…

作者头像 李华
网站建设 2026/6/12 18:09:00

【R与Python变量传递深度解析】:揭开数据交互背后的隐秘机制

第一章&#xff1a;R与Python变量传递机制概述在数据科学和统计计算领域&#xff0c;R与Python是两种广泛使用的编程语言。尽管它们在语法和生态上存在差异&#xff0c;但在变量传递机制的设计上展现出不同的哲学取向。理解这些机制对于编写高效、可预测的程序至关重要。变量绑…

作者头像 李华
网站建设 2026/6/12 18:51:27

为什么你的GraphQL API不够灵活?PHP字段别名设计的4个致命误区

第一章&#xff1a;为什么你的GraphQL API不够灵活&#xff1f;PHP字段别名设计的4个致命误区在构建现代API系统时&#xff0c;GraphQL凭借其按需查询的能力成为首选。然而&#xff0c;许多PHP开发者在实现字段别名&#xff08;Field Aliasing&#xff09;时&#xff0c;常因设…

作者头像 李华
网站建设 2026/6/12 17:27:34

为什么你的Go程序内存居高不下?:Golang逃逸分析与GC调优全揭秘

第一章&#xff1a;为什么你的Go程序内存居高不下&#xff1f;Go语言以其高效的并发模型和自动垃圾回收机制广受开发者青睐&#xff0c;但不少人在生产环境中发现程序的内存占用持续偏高&#xff0c;甚至出现“内存泄漏”现象。实际上&#xff0c;大多数情况并非语言缺陷&#…

作者头像 李华
网站建设 2026/6/15 7:29:17

qubit初始化不难,难的是你不知道这5个隐藏陷阱

第一章&#xff1a;qubit初始化的基本概念与R包环境搭建在量子计算中&#xff0c;qubit&#xff08;量子比特&#xff09;是信息存储和处理的基本单位。与经典比特只能处于0或1状态不同&#xff0c;qubit可以处于叠加态&#xff0c;这使其具备强大的并行计算潜力。qubit初始化是…

作者头像 李华