我需要检查一下用户是否向左或向右移动他的相机,在 ARkit.这是我的代码
func renderer(_ renderer: SCNSceneRenderer, willRenderScene scene: SCNScene, atTime time: TimeInterval) {
//get camera position
guard let pointOfView = mainScene.pointOfView else {return}
let transform = pointOfView.transform
let orientation = SCNVector3(-transform.m31,-transform.m32,-transform.m33)
let location = SCNVector3(transform.m41,transform.m42,transform.m43)
currentPositionOfCamera = orientation + location
print(currentPositionOfCamera)
if currentPositionOfCamera.x <= -1.0 {
print("left")
//addBox(x: currentPositionOfCamera.x, y: currentPositionOfCamera.y, z: -5.0)
if(!isimageAdd && !isRightSide){
DispatchQueue.main.async {
self.isimageAdd = true
self.isRightSide = true
self.addBox(x: -6.1, y: self.currentPositionOfCamera.y, z: -1.5)
}
}
}else if currentPositionOfCamera.x > 1.0 {
print("right")
//addBox(x: currentPositionOfCamera.x, y: currentPositionOfCamera.y, z: 5.0)
if(!isimageAdd && isRightSide){
DispatchQueue.main.async {
self.isimageAdd = true
self.isRightSide = false
self.addBox(x: 6.1, y: self.currentPositionOfCamera.y, z: -1.5)
}
}
}
else {
print("front")
}
}
我正在使用 ARSCN查看 这段代码有时能正常工作,有时却不能。左或右 我是新来的 ARkti......所以请帮助我:)
老实说,我以前没有尝试过ARKit,但我看到,当你试图移动手机时,这个委托人就会被触发,所以试着检查一下。UIDevice.current.orientation
在它的旁边。我不知道这对你有没有帮助。
switch UIDevice.current.orientation {
case .portrait:
break
case .landscapeLeft:
break
case .portraitUpsideDown:
break
case .landscapeRight:
break
case .faceDown:
break
case .faceUp:
break
}