RealityKit——哪个实体与其他实体相交

RealityKit – Which Entity is intersecting with other Entity

let height: Float = 1
let width: Float = 0.5
let box = MeshResource.generateBox(width: 0.02, height: height, depth: width)

这个盒子的实时位置与当前相机位置相同,在 AR World 中我会有多个不同形状的盒子,我想确定哪个对象与当前实时盒子相交。

我不能通过位置匹配(最近的一个)来做到这一点。我真的想知道 touching/intersecting 实时框的对象。

提前致谢。

您可以使用 subscribe() 方法轻松做到这一点。以下代码供参考:

(在 Reality Composer 中启用了两个对象的物理)

import UIKit
import RealityKit
import Combine

class ViewController: UIViewController {
    
    @IBOutlet var arView: ARView!
    var subscriptions: [Cancellable] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let boxScene = try! Experience.loadBox()
        arView.scene.anchors.append(boxScene)
        
        let floorEntity = boxScene.children[0].children[1]

        let subscribe = arView.scene.subscribe(to: CollisionEvents.Began.self,
                                               on: floorEntity) { (event) in
            print("Collision Occured")
            print(event.entityA.name)
            print(event.entityB.name)
        }
        
        self.subscriptions += [subscribe]
    }
}