如何根据用户位置重新调整SKNodes

时间:2019-06-03 22:29:27

标签: ios swift core-location arkit

我目前正在使用ARKit和CoreLocation一起在屏幕上放置元素。这些元素(例如,建筑物,房屋等)是根据它们自己的坐标(经度/纬度)和用户坐标放置的。如您所知,即使通过设置最佳精度,CoreLocation也不总是很精确,并且用户位置和航向经常得到纠正。

在纠正了方向或用户位置后,如何重新调整所有内容而不必删除并重新添加所有Node?似乎您无法更改相机转换属性。我也尝试过setWorldOrigin(relativeTransform: simd_float4x4),但没有任何改变。

到目前为止,我发现最好的解决方案是使用SKAction,但是如果您有很多节点,它往往会非常昂贵并且会使应用程序变慢。

您能告诉我我做错了什么还是有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

让我们考虑到只有用户的物理位置会发生变化,其他所有内容都相对于其他对象放置。因此,我建议您将所有节点的父节点设置为公共节点,可以将其添加为默认根的子节点。

因此您的结构应为

Error

通过这种方式,您可以更新rootNode -> myRootNode -> (all other 3D)的翻译,它将所有子元素转移到位。