news 2026/6/12 14:45:18

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/11 16:53:20

协程退出后资源未释放?你必须知道的4个隐藏陷阱

第一章&#xff1a;协程退出后资源未释放&#xff1f;你必须知道的4个隐藏陷阱 在使用协程&#xff08;goroutine&#xff09;进行并发编程时&#xff0c;开发者常常关注性能与响应速度&#xff0c;却容易忽视协程退出后资源清理的问题。未正确释放资源可能导致内存泄漏、文件句…

作者头像 李华
网站建设 2026/6/11 14:04:30

Fusaka升级对以太坊都有哪些好处?

作者&#xff1a;Haotian&#xff1b;来源&#xff1a;X&#xff0c;tmel0211 一些朋友诧异&#xff0c;为何以太坊Fusaka升级讨论度这么低&#xff1f;因为不像之前PoW转PoS升级以及Dencun升级&#xff0c;这次升级是典型的“工程式优化”&#xff0c;没有概念噱头&#xff0c…

作者头像 李华
网站建设 2026/6/11 21:56:48

【游戏AI架构升级】:行为树优化的7种高阶策略全公开

第一章&#xff1a;行为树优化的核心理念 行为树作为一种强大的任务调度与决策建模工具&#xff0c;广泛应用于游戏AI、机器人控制和自动化系统中。其核心优势在于将复杂的行为逻辑分解为可复用、可组合的节点&#xff0c;从而提升系统的可维护性与扩展性。然而&#xff0c;随着…

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

纤维协程异常处理实战(99%开发者忽略的关键细节)

第一章&#xff1a;纤维协程异常处理的核心挑战在现代高并发系统中&#xff0c;纤维&#xff08;Fiber&#xff09;作为一种轻量级线程模型&#xff0c;被广泛应用于协程调度。然而&#xff0c;其异常处理机制相较于传统线程更为复杂&#xff0c;主要源于执行上下文的动态切换与…

作者头像 李华
网站建设 2026/6/10 12:50:46

纤维协程超时配置避坑手册(资深架构师20年经验总结)

第一章&#xff1a;纤维协程超时配置的核心概念在现代高并发服务架构中&#xff0c;纤维协程&#xff08;Fiber Coroutine&#xff09;作为一种轻量级执行单元&#xff0c;广泛应用于提升系统吞吐量与资源利用率。超时配置是保障协程不无限阻塞、避免资源泄漏的关键机制。合理的…

作者头像 李华
网站建设 2026/6/12 16:55:58

【高并发系统设计必修课】:纤维协程调度模型全剖析

第一章&#xff1a;纤维协程的任务调度在现代高并发系统中&#xff0c;纤维协程&#xff08;Fiber Coroutine&#xff09;作为一种轻量级执行单元&#xff0c;显著提升了任务调度的效率与灵活性。与操作系统线程不同&#xff0c;纤维协程由用户态调度器管理&#xff0c;避免了内…

作者头像 李华