当前位置: 首页 > 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.gsyq.cn/news/105174.html

相关文章:

  • n8n 2.0 中文汉化版一键部署教程 | 解除Execute Command限制
  • 【Q#调试权威手册】:微软官方未公开的4个调试利器全曝光
  • 泛型集合性能瓶颈,90%的开发者都忽略的3个关键点
  • 手把手教你编译PHP 8.6扩展(含10个实用调试技巧)
  • 揭秘PHP 8.6性能瓶颈:如何利用新特性打造超强监控系统
  • 2025冬暖影展奔赴广州,以光影开启时空对话
  • 【PHP 8.6性能飞跃核心】:JIT编译缓存策略深度解析与实战优化
  • Laravel 13的多模态事件监听全攻略(颠覆传统监听模式)
  • leetcode155 最小栈(Java)
  • 调问更新12.5~12.12:部门进度统计+1项功能新增+6项功能优化+3项BugFix
  • PHP 8.6兼容性测试实战(资深架构师亲授迁移经验)
  • 农业科研人员必看:如何用R语言构建高精度随机森林预测模型
  • NVIDIA多模态AI能力全景分析:高效生态系统、训练优化与落地实践
  • 【PHP性能优化关键一步】:深入PHP 8.6内存泄漏监控与自动预警方案
  • 【纤维协程调度优化指南】:掌握任务优先级分配的5大核心策略
  • 篮球场景目标检测与定位_YOLO11-RFPN实现详解
  • 【Laravel 13缓存清理终极指南】:掌握多模态缓存清除的5大核心策略
  • 亲爱的圣诞老人,这里有一点小小的帮助,献给圣诞节
  • 【高端图形渲染必修课】:掌握4种专业级抗锯齿算法核心原理
  • 【金融风险管理实战】:手把手教你用R语言计算VaR的5种核心方法
  • 基于VDLL的矢量型GPS信号跟踪算法MATLAB仿真,包括程序+word设计文档
  • 【渲染的纹理:从入门到精通】:掌握GPU纹理映射核心技术的7大关键步骤
  • 两种方法实现循环温度的边界条件设置及复杂的温度变化
  • 【PHP扩展性能优化秘籍】:基于Rust的函数调试与内存泄漏排查指南
  • 【GraphQL性能优化指南】:利用PHP字段别名提升接口响应速度300%
  • 【DOTS物理系统深度解析】:掌握高性能物理模拟的5大核心技巧
  • 错过将后悔!R量子模拟中不可不知的门序列设计原则
  • 【Flutter x 鸿蒙】第四篇:双向通信——Flutter调用鸿蒙原生能力 - 青青子衿-
  • Java毕设项目:基于springboot工资管理系统(源码+文档,讲解、调试运行,定制等)
  • 【R Shiny多模态数据导入终极指南】:掌握5种高效组件实现无缝数据集成