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]
}
}
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]
}
}