我正在使用SceneView在SwiftUI中加载一个3D对象:
SceneView(
scene: scene,
pointOfView: cameraNode,
options: [.autoenablesDefaultLighting]
)我已经从.allowsCameraControl中删除了options属性,以便手动处理手势。我想要能够水平旋转物体。在UIKit中,我能够像这样使用UIPanGestureRecognizer来做到这一点:
func rotateObject(_ gesture: UIPanGestureRecognizer) {
var currentAngleY: Float = 0.0
guard let nodeToRotate = scene?.rootNode else { return }
let translation = gesture.translation(in: gesture.view!)
var newAngleY = (Float)(translation.x) * (Float)(Double.pi) / 180.0
newAngleY += currentAngleY
nodeToRotate.eulerAngles.y = newAngleY
if(gesture.state == .ended) { currentAngleY = newAngleY }
}但在SwiftUI,我不知道如何才能做到这一点,任何帮助都将不胜感激。
发布于 2022-09-21 13:11:49
您在这个文章中找到的解决方案背后的全部故事。SwiftUI中的代码。
Circle()
.fill(Color.white)
.opacity(0.1)
.frame(width: 256, height: 256, alignment: .center)
.gesture(
DragGesture(minimumDistance: 30, coordinateSpace: .global)
.onChanged { gesture in
startWalking.send(gesture.translation)
}
.onEnded { _ in
stopWalking.send(true)
}
)您可以使用拖动手势和订阅在sceneView和SwiftUI接口之间传输信息。
https://stackoverflow.com/questions/73787059
复制相似问题