将SCNNodes设置为具有恒定的y轴值?

时间:2015-12-28 22:36:46

标签: ios swift scenekit

我有一系列SCNPlane类型的对象设置为围绕中央SCNPlane旋转,宽度和高度设置为0.在我的应用程序中加载视图时,我得到下面的内容,这表明我的飞机正确加载。我的光标也可以从左到右旋转它们。它看起来像这样:

enter image description here

但是,如果我的光标在y方向上移动,则视图最终会移动,以便从另一个角度显示显示。基本上,视图最终可能看起来像这样:

enter image description here

我不希望这种情况发生;我希望第一张图片成为我想要的。当我移动光标时,它应向左或向右移动,而不是向上或向下移动。

这是我尝试过的:

  • 将数据透视设置为SCNMatrix4MakeRotation(Float(CGFloat(M_PI_2)), 0, 0, 0)
  • 将轮播设置为SCNVector4(1, 0, 1, Float(CGFloat(M_PI_2))
  • 将方向设置为SCNQuaternion(0, 0, 0, Float(CGFloat(M_PI_2))
  • 使用SCNLookAtConstraint函数将所有平面居中于中心坐标并面向外
  • SCNTransformConstraint函数与接收节点的块和矩阵(newMatrix = incomingMatrix)变量一起使用。如果它检测到对象的位置具有值y,则newMatrix.m42 = 0。无论如何都会返回newMatrix

以上都没有解决我的问题。我甚至可以将相机限制在x轴和z轴上吗?

1 个答案:

答案 0 :(得分:0)

我花了几天时间,但我终于弄明白了。

我实现了rickster建议的摄像头节点,并将allowsCameraControl设置为false。然后我实现了一个UIPanGestureRecognizer并将其绑定到一个函数,如建议here,这也是基于rickster的答案。

它现在做我想要的。非常感谢大家!