Swift iOS RealityKit:从屏幕的光线投射中心获取放置对象的世界位置

Swift iOS RealityKit:从屏幕的光线投射中心获取放置对象的世界位置,swift,arkit,realitykit,Swift,Arkit,Realitykit,使用光线投射和点击手势,我成功地将多个对象(实体和锚定)放置在我的arview中 现在,我正试图使用屏幕中心获取最接近美国的实体,以便在其附近放置一个对象。因此,我们可以想象,每当一个锚点靠近手机屏幕的中心时,一个新的对象“繁殖” 为此,我尝试使用光线投射,但我的代码: func session(_ session: ARSession, didUpdate frame: ARFrame) { // if let hitEntity = arView.ent

使用光线投射和点击手势,我成功地将多个对象(实体和锚定)放置在我的
arview

现在,我正试图使用屏幕中心获取最接近美国的
实体
,以便在其附近放置一个对象。因此,我们可以想象,每当一个锚点靠近手机屏幕的中心时,一个新的对象“繁殖”

为此,我尝试使用
光线投射
,但我的代码:


    func session(_ session: ARSession, didUpdate frame: ARFrame) {
     // 
        if let hitEntity = arView.entity(
                at: self.arView.center
        ) {
            print("hitEntity IS FOUND !")
            print(hitEntity.name) // this is the object I previously placed

            guard let result = arView.raycast(from: self.arView.center, allowing: .estimatedPlane, alignment: .any).first else { return }

           // here result is the surface behind/below the object, and not the object I want 
            return;

         }
     
    }

结果
在曲面上触发,但我无法获得对象(实体)的世界变换,而不是后面的曲面

你有什么想法吗


感谢

要获取实体的worldTransform,您可以调用
hitEntity.position(relativeTo:nil)


如果我没有正确理解您的问题,这可能也有帮助:

要获取
result
相对于实体的局部空间的位置,可以调用
hitEntity.convert(位置:result.worldTransform,from:nil)

Convert是RealityKit中非常有用的方法。有几种不同的方法,但下面是我在上面添加的方法的文档:


我希望其中一个能帮助你