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

相关文章:

  • PHP 8.6 JIT编译器重大升级(指令优化黑科技曝光)
  • Keil串口通信全教程:UART初始化、数据收发(中断/查询模式)+串口调试助手验证
  • 揭秘WebSocket频繁断线之谜:3种常见错误码分析与修复方案
  • LPDDR6 JEDEC 原文解读学习—2.4 Data Packet Format(3)(~持续更新)
  • 【PHP性能优化关键一步】:深入PHP 8.6内存泄漏监控与自动预警方案
  • PHP 8.6兼容性测试实战(资深架构师亲授迁移经验)
  • 从入门到精通:用R Shiny打造可交互的多维度数据仪表盘
  • 光伏阵列遇到局部阴影就像吃火锅被隔壁桌抢肉——憋屈得很。今天咱们用Python整活,搞个3×3电池板的阴影仿真模型,重点观察串联结构在阴影下的输出曲线怎么抽风
  • 你还不知道HTTP/3的这5个性能秘密?:资深架构师20年经验倾囊相授
  • 如何将EF Core响应时间降低80%?一线大厂都在用的4种策略
  • BGP综合实验
  • 大数据采集与处理技术实训室
  • 基于MATLAB 火灾检测系统,可以实现图片的火苗检测。 推荐matlab2019A及以后。
  • Harmony学习之本地数据存储
  • 【PHP扩展性能优化秘籍】:基于Rust的函数调试与内存泄漏排查指南
  • Flutter 状态管理终极指南(一):从 setState 到 Riverpod 2.0
  • Symfony 8路由缓存机制揭秘:如何让应用加载快如闪电
  • 基于STM32智能营养称系统的设计与实现_352
  • PHP 8.6升级必看:5个关键兼容性检测步骤,避免生产环境崩溃
  • 医疗行业PHP数据备份最佳实践(20年专家亲授方案)
  • 4、Gateway
  • 泛型实例化陷阱频发?资深架构师总结的6大避坑法则
  • hot100 2.字母异位词分组
  • R语言Cox回归避坑指南(临床数据建模常见错误TOP5)
  • 是德 N9041B UXA 频谱分析仪在真空环境完成卫星信号分析
  • 用是德DSOX1204A示波器快速捕捉与调试信号的实用指南
  • 连接器EMC测试不过关?5步定位干扰源头,快速通过认证
  • 为什么90%的物联网项目卡在部署阶段?真相令人震惊
  • 你还在用线性回归预测产量?R语言随机森林模型已全面超越
  • Laravel 13发布后必须掌握的技能:多模态任务队列的7种高级用法