Swift RealityKit–;完成实体移动后检测

Swift RealityKit–;完成实体移动后检测,swift,augmented-reality,arkit,realitykit,Swift,Augmented Reality,Arkit,Realitykit,使用RealityKit的安装手势作为实体,我可以移动、旋转和调整它们的大小。这很酷,但我希望能够检测到用户何时完成移动对象以触发某些东西 现在我有这个: guard let entity = try? ModelEntity.loadModel(named: "\(name).usdz") else { NSLog("ERROR loading model") return } entity.generateCollisionShape

使用RealityKit的
安装手势
作为实体,我可以移动、旋转和调整它们的大小。这很酷,但我希望能够检测到用户何时完成移动对象以触发某些东西

现在我有这个:

guard let entity = try? ModelEntity.loadModel(named: "\(name).usdz") 
else {
    NSLog("ERROR loading model")
    return
}
entity.generateCollisionShapes(recursive: true)

arView.installGestures(.all, for: entity)
    
let anchorEntity = AnchorEntity(world: position)
    
anchorEntity.addChild(entity)
    
arView.scene.anchors.append(anchorEntity)
现在,我如何处理
手势
事件以获得移动/调整网络大小的新位置

谢谢

installsignities()
实际上返回一个包含
EntityGestureRecognitor
实例的数组。 您可以循环此阵列,并将目标添加到每个识别器:

arView.installsignities(.all,for:entity).中的forEach{gestureRecognitor
手势识别器.addTarget(self,action:#选择器(HandleTesture(:))
}
然后,您可以添加一个手势处理程序,用于检查适当的手势识别器,检查其
.state
属性并相应地执行以下操作:

@objc private func handleGesture(u识别器:UIgestureRecognitor){
guard let Translation手势=识别器as?EntityTranslationGestureRecognitizer else{return}
切换translation手势.state{
案例.开始:
打印(“翻译手势开始”)
案件结束:
打印(“翻译手势结束”)
//获取实体.transform
违约:
打破
}
}