SceneKit SCNLookAtConstraint无法重载init

时间:2014-11-06 15:24:52

标签: xcode swift scenekit

sceneKit的示例项目中,我试图让相机查看我从中心偏移的船对象。但由于某种原因,我无法做到。

我使用以下代码查看该船。但它仍然给出了错误:

  

找不到init的重载。

我正在使用 swift 代码。

cameraNode.constraints = SCNLookAtConstraint(ship)

请帮助。感谢。

3 个答案:

答案 0 :(得分:1)

我在自动填充中看到以下内容,看起来很有希望:

SCNLookAtConstraint(target:)

这是ObjC工厂方法+lookAtConstraintWithTarget:的Swift形式。

通常,有三种简单的方法可以找出ObjC工厂方法(如+[NSFoo fooWithBar:])如何转换为Swift初始化程序(如init(bar:),您使用语法{{1}调用} }):

  • 将类名输入Swift文件,打开paren,自动完成应该显示可接受的初始化程序集
  • 在Swift文件中键入类名,然后按住Command键并单击它以查看该类的自动生成的Swift接口(基于ObjC标头),包括初始化程序声明
  • 在线查看documentation for a class或在Xcode中查看,您将看到每个API的ObjC和Swift声明。

答案 1 :(得分:1)

这种设置对我有用,显然你最好不要只是在不存在的情况下展开节点,但它给出了一般的想法。

let targetNode = scene.rootNode.childNodeWithName("nodeName", recursively: false)    
let constraint               = SCNLookAtConstraint(target: targetNode!)
cameraNode?.constraints = [constraint]

答案 2 :(得分:0)

你必须使用+ lookAtConstraintWithTarget:创建一个look-at约束。 另请注意,constraints属性需要一个数组。