ARKit –接近传感器

时间:2019-10-13 18:29:55

标签: swift augmented-reality arkit

ARKit中的垂直位置检测不是很好,因此我正在使用接近传感器放置找到的垂直平面。 UX如下:

  1. 要求用户将设备的正面放在墙上
  2. 当触发接近传感器时,使用AR Camera变换制作垂直平面

我当前面临的问题是,当触发前传感器时,一切都停止了。用于ARSCNViewDelegate调用的所有CoreMotion传感器和渲染方法都将停止。这将导致世界原点从其原点移动,并使放置的物品也随之移动。

是否有一种无需关闭所有设备即可获取接近传感器数据的方法?有没有更好的放置垂直物品的方法?

1 个答案:

答案 0 :(得分:0)

异步功能使您几乎可以同时执行两个或多个任务,而不必等到分派的块执行完毕。

因此,您必须使用如下方法:

class ViewController: UIViewController {

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        DispatchQueue.main.async {
            self.proximitySensorActivation()
        }
    }

    func proximitySensorActivation() {

        let device = UIDevice.current
        device.isProximityMonitoringEnabled = true

        if device.isProximityMonitoringEnabled {
            NotificationCenter.default.addObserver(self,
                                               selector: #selector(proximityChanged),
                                                   name: UIDevice.proximityStateDidChangeNotification,
                                                 object: device)
        }
    }

    @objc func proximityChanged(notification: NSNotification) {

        if let device = notification.object as? UIDevice {
            print(device)
        }
    }
}