在SceneKit中追逐相机

Byt*_*Guy 1 ios scenekit

假设我有一个立方体节点,我在场景中移动它,我怎么能有一个跟在盒子后面的相机?

我知道有SCNLookAtConstraint,但我追求的是一个追逐相机.一个实际上改变它的位置,以便它在节点后面附加.

我没有找到任何示例代码来显示实现此方法,有没有人有任何想法?

mnu*_*ges 7

你能否让你的摄像机节点成为盒子节点的子节点?


ric*_*ter 6

这里已经有很多好主意。:)这是第三个(和第四个?)选项:在iOS 11(和macOS 10.13等)中,有更多SCNConstraint可用的类型,因此您可以轻松地将它们链接在一起以实现各种样式的“追逐相机”行为。

您可以在SceneKitWWDC17演讲中看到有关此内容的更多信息和一些示例:

  • SCNLookAtConstraint+可为SCNReplicatorConstraint您提供类似最近的3D Mario游戏的功能,其中相机跟随玩家,但相对于世界的方向不变。

  • SCNLookAtConstraint+ SCNDistanceConstraint带给您更多“追逐相机”风格,其中相机会随着播放器自动旋转。

SCNAccelerationConstraint通过平滑快速移动并逐渐追赶玩家,再加上任何一种都可以使游戏更加自然。您还可以添加诸如SCNAvoidOccluderConstraint许多第三人称游戏常见行为的内容,其中相机不会穿过墙壁,会避免尝试穿过一列,等等。


在iOS 11之前,您可以使用SCNTransformConstraint和块根据移动的多维数据集的位置重置相机节点的位置。将其与查看约束相结合,以使相机对准立方体,并influenceFactor针对所需的平滑度/滞后度调整每个约束的。

  • 您能否举一个SCNTransformConstraint的例子。没有演示:( (5认同)