【问题标题】:Button Rotation 3D Objects ARKit 2按钮旋转 3D 对象 ARKit 2
【发布时间】:2023-03-28 01:33:01
【问题描述】:

我有由图像检测触发的 3D 对象。我添加了按钮,以便用户可以在不同的视图中查看对象,例如左、右、上、下等。我的代码有一个缺陷,因为旋转点是从最后一次触摸设置的。例如,如果你按右,它会变成 .pi/2,然后当你按左时它会变成 -.pi/2,将它重置回前视图而不是左视图。我如何能够设置一个原始的前原点,以便在每次按下后旋转“重置”并进入相应的视图?谢谢。

@IBAction func leftSideRotate(_ sender: UIButton) {
    let rotate = SCNAction.rotateBy(x: 0, y: -.pi/2, z: 0, duration: 0.5)
    sender.isEnabled = false
    toggleButton = sender
    activeNode?.runAction(rotate,completionHandler: enableButtonn)
}
func enableButtonn (){
    toggleButton?.isEnabled = true
}

@IBAction func upSole(_ sender: UIButton) {
    let rotate = SCNAction.rotateBy(x: -.pi/2, y: 0, z: 0, duration: 0.5)
    sender.isEnabled = false
    toggleButton = sender
    activeNode?.runAction(rotate,completionHandler: enableButtonnn)
}
func enableButtonnn (){
    toggleButton?.isEnabled = true
}

【问题讨论】:

    标签: swift xcode rotation scenekit arkit


    【解决方案1】:

    解决此问题的一种方法是在加载后立即保存场景中对象的原始坐标。然后,使用rotateTo 方法(而不是rotateBy)来实现所需的旋转。

    例子:

    let originalPosition = activeNode?.position
    
    let rotate = SCNAction.rotateTo(x: originalPosition.x, y: (originalPosition.y - .pi/2), z: originalPosition.z, duration: 0.5)
    

    【讨论】:

    • 我在“let zPosition = activeNode?.zPosition”这一行遇到如下错误:“SCNNode”类型的值没有成员“zPosition”;你的意思是“位置”吗?
    • 请查看我更新的答案,如果您仍有任何问题,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 2018-10-26
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    相关资源
    最近更新 更多