将 CustomEntity 添加到 RealityKit 中的平面锚点

Adding CustomEntity to the Plane Anchor in RealityKit

我实现了一个简单的自定义实体,如下所示:

class Box: Entity, HasModel, HasAnchoring {
        
    required init(color: UIColor) {            
        super.init()                    
        self.components[ModelComponent.self] = ModelComponent(mesh: MeshResource.generateBox(size: 0.3), 
                                                         materials: [SimpleMaterial(color: color, isMetallic: true)])
    }
    
    convenience init(color: UIColor, position: SIMD3<Float>) {
        self.init(color: color)
        self.position = position 
    }
    
    required init() {
        fatalError("init() has not been implemented")
    }
}

ContentView.swift

我尝试将 Box 实体添加到由水平面定义的锚点。

func makeUIView(context: Context) -> ARView {
        
    let arView = ARView(frame: .zero)            
    let anchorEntity = AnchorEntity(plane: .horizontal)
        
    let box = Box(color: .red)
    anchorEntity.addChild(box)
    arView.scene.anchors.append(anchorEntity)
    return arView
}

但是,Box 实体似乎从未停留在水平面上。它似乎总是漂浮在顶部。这是为什么?

要防止世界锚定在 [0, 0, 0],您不需要遵守 HasAnchoring 协议:

class Box: Entity, HasModel {
    // content...
}

因此,您的 AnchorEntity(plane: .horizontal) 现在处于活动状态。