我目前正在尝试使用平移手势识别器在SceneKit中移动一个节点。我只沿着X
轴移动它,但是即使只使用小手势,我的手势也会使对象移动得比应该快得多/远。我不确定我在这里做错了什么,但这是我的手势识别器代码:
@objc func handlePan(_ pan:UIPanGestureRecognizer) {
if pan.state == .changed {
let translation = pan.translation(in: pan.view!)
node!.position = SCNVector3(x:node!.position.x + Float(translation.x), y:node!.position.y, z:node!.position.z)
pan.setTranslation(CGPoint.zero, in: pan.view!)
}
}
就像我所说的,对象正在被移动,只是以惊人的速度和距离被发射出去。这种效果几乎是累积的。
我认为如果我没有重置我的平移手势识别器的翻译,那么可能会出现这种情况,但我在这里做到了。
pan.setTranslation(CGPoint.zero, in: pan.view!)
我其实是在尝试在ARKit场景中让它正常运行,但现在我已经把所有东西都剥离开来,只是想让一个节点正确移动,但还是遇到了问题。
这个pan是添加到ARSCNView中,而我想操作的节点是作为子节点添加到ARSCNView.scene.rootNode
,所以我想知道是否它们之间的位置/坐标是问题所在。
SCNVector
中的Z
代表unprojectPoint
的深度,对于您的目的来说可能为零。 - Vasilii Muravev