我想在visionOS上复制Apple Mindativity应用程序的以下行为:3D对象位于窗口后面,当移动窗口时,该对象会跟随窗口的位置。会话开始后,对象将保持在同一位置。
看起来物体处于沉浸式空间中。我不确定它是否从一开始就在沉浸空间中,但几乎可以肯定在课程开始后它就在那里。所以,看起来 WindowGroup 的位置和对象之间存在联系。
似乎无法获取窗口的位置,所以我不知道苹果是如何实现这种行为的。我只是希望他们没有使用私有 API,您将能够帮助我。预先感谢您!
您可以使用
visionOS中的
ornament
修饰符实现类似的效果。这是一个例子:
import SwiftUI
import RealityKit
import RealityKitContent
struct ContentView: View {
var body: some View {
Text("Hello, world!")
.ornament(attachmentAnchor: .scene(.back)) {
Model3D(named: "Scene", bundle: realityKitContentBundle)
.frame(depth: -1300)
}
}
}
ornament
修改器可让您将内容(如 3D 模型)附加到场景的特定部分。在这个例子中:
attachmentAnchor
设置为 .scene(.back)
,将装饰品固定在场景的后面。Model3D
,从RealityKitContent
束加载,并定位深度为-1300
。您可以在
Apple 文档中找到有关
ornament
修饰符的更多信息。