首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SwiftUI SceneView中水平旋转对象

如何在SwiftUI SceneView中水平旋转对象
EN

Stack Overflow用户
提问于 2022-09-20 12:53:10
回答 1查看 48关注 0票数 0

我正在使用SceneView在SwiftUI中加载一个3D对象:

代码语言:javascript
复制
SceneView(
            scene: scene,
            pointOfView: cameraNode,
            options: [.autoenablesDefaultLighting]
        )

我已经从.allowsCameraControl中删除了options属性,以便手动处理手势。我想要能够水平旋转物体。在UIKit中,我能够像这样使用UIPanGestureRecognizer来做到这一点:

代码语言:javascript
复制
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,我不知道如何才能做到这一点,任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2022-09-21 13:11:49

您在这个文章中找到的解决方案背后的全部故事。SwiftUI中的代码。

代码语言:javascript
复制
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接口之间传输信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73787059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档