首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CollisionEvent没有在RealityKit场景中开火的原因?

CollisionEvent没有在RealityKit场景中开火的原因?
EN

Stack Overflow用户
提问于 2022-04-02 13:35:47
回答 1查看 138关注 0票数 2

事件订阅已添加到ARViewARViewRealityKit中。

代码语言:javascript
复制
arView.scene.subscribe(to: CollisionEvents.Began.self) { event in
    print("Some collision occured")
}

Entitiesscene中视觉上发生了碰撞,但是CollisionEvent没有被触发。下面是两个明显冲突的对象的示例层次结构:

__RKPhysics▿‘篮板’,孩子们:1

...⟐PhysicsMotionComponent

...⟐变换

...⟐CollisionComponent

...⟐SynchronizationComponent

...⟐PhysicsBodyComponent

...▿'simpBld_root‘:ModelEntity

......⟐变换

......⟐ModelComponent

......⟐SynchronizationComponent

CollisionComponent

CollisionComponent(形状: RealityKit.ShapeResource,模式: RealityKit.CollisionComponent.Mode.default,过滤器:RealityKit.CollisionFilter(组: RealityKit.CollisionGroup(rawValue: 1),掩码: RealityKit.CollisionGroup(rawValue: 1)

ModelEntity ...⟐变换▿'ball‘

...⟐CollisionComponent

...⟐ModelComponent

...⟐SynchronizationComponent

...⟐PhysicsBodyComponent

CollisionComponent

CollisionComponent(形状: RealityKit.ShapeResource,模式: RealityKit.CollisionComponent.Mode.default,过滤器:RealityKit.CollisionFilter(组: RealityKit.CollisionGroup(rawValue: 1),掩码: RealityKit.CollisionGroup(rawValue: 4294967295)

已将名为Entities的内容作为AnchorEntity的一部分添加到

代码语言:javascript
复制
let anchorEntity = AnchorEntity(anchor: anchor)
anchorEntity.addChild(backboardEntity)
anchorEntity.addChild(ballEntity)
arView.scene.anchors.append(anchorEntity)

为什么没有CollisionEvents不被解雇?

EN

回答 1

Stack Overflow用户

发布于 2022-04-02 16:58:17

此代码不言自明:

代码语言:javascript
复制
import RealityKit
import Combine

class ViewController: UIViewController {
    
    @IBOutlet var arView: ARView!
    var subscriptions: [Cancellable] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()            
        let modelOne = ModelEntity(mesh: .generateSphere(radius: 0.04)) 
                               as (Entity & HasCollision & HasPhysicsBody)
        let modelTwo = ModelEntity(mesh: .generateSphere(radius: 0.04)) 
                               as (Entity & HasCollision & HasPhysicsBody)
        
        modelOne.position.y = 0.75
        modelOne.physicsBody = .init()
        modelOne.physicsBody?.mode = .dynamic
        modelOne.generateCollisionShapes(recursive: false)            
        modelTwo.physicsBody = .init()
        modelTwo.physicsBody?.mode = .static
        modelTwo.generateCollisionShapes(recursive: false)
        
        let sub = arView.scene.subscribe(to: CollisionEvents.Began.self, 
                                on: modelOne) { _ in print("OCCURED!") }
        subscriptions.append(sub)
        
        let anchor = AnchorEntity()
        anchor.addChild(modelOne)
        anchor.addChild(modelTwo)
        arView.scene.anchors.append(anchor)
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71718017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档