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

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对象,这个对象需要保留,否则订阅会被理解取消。

http://www.jsqmd.com/news/94612/

相关文章:

  • n8n 2.0 中文汉化版一键部署教程 | 解除Execute Command限制
  • 太月香学新书《中国传统香学》首发亮相
  • 用梯形图+SCL玩转FactoryIO码垛控制
  • 泛型集合性能瓶颈,90%的开发者都忽略的3个关键点
  • 【Q#调试权威手册】:微软官方未公开的4个调试利器全曝光
  • IU5209:30V OVP,快充申请,1A,NTC及使能功能,4节锂电池充电管理芯片
  • 手把手教你编译PHP 8.6扩展(含10个实用调试技巧)
  • 十五五智能制造数字化工厂蓝图规划及推进路线:1 张蓝图、3 条主线、6 大系统、4 阶段路线
  • 某Boss直聘数据获取
  • 揭秘PHP 8.6性能瓶颈:如何利用新特性打造超强监控系统
  • 2025冬暖影展奔赴广州,以光影开启时空对话
  • 揭秘量子算法落地难题:3个关键突破点让你少走5年弯路
  • 为什么你的GraphQL API不够灵活?PHP字段别名设计的4个致命误区
  • 掌握这5种AOT调试黑科技,效率提升300%不是梦
  • 【紧急预警】物联网安全漏洞频发,部署时必须配置的4道防火墙
  • IntelliJ IDEA 安装 pmd-idea-1.9.0.zip 插件详细教程
  • 从入门到精通:用R Shiny打造可交互的多维度数据仪表盘
  • Laravel 13的多模态事件监听全攻略(颠覆传统监听模式)
  • leetcode155 最小栈(Java)
  • 【PHP 8.6性能飞跃核心】:JIT编译缓存策略深度解析与实战优化
  • 因数 因子 质数 素数
  • PHP 8.6兼容性测试实战(资深架构师亲授迁移经验)
  • 调问更新12.5~12.12:部门进度统计+1项功能新增+6项功能优化+3项BugFix
  • 【高并发系统设计必修课】:纤维协程调度模型全剖析
  • 农业科研人员必看:如何用R语言构建高精度随机森林预测模型
  • NVIDIA多模态AI能力全景分析:高效生态系统、训练优化与落地实践
  • 还在手动处理API响应?Symfony 8自动格式化功能全揭秘
  • 【PHP性能优化关键一步】:深入PHP 8.6内存泄漏监控与自动预警方案
  • Flutter 状态管理终极指南(一):从 setState 到 Riverpod 2.0
  • 内存分配效率低?你可能忽略了这个关键问题,90%的系统都存在