如何在SceneKit中添加带有类的基元

时间:2017-07-10 14:41:53

标签: ios swift scenekit arkit

在SceneKit中创建一个类非常重要。但是,我无法让它发挥作用。

这是我的班级代码

import UIKit
import SceneKit

class Ship: SCNNode {
    override init(){
        super.init()

    let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0)

    let node = SCNNode(geometry: box)

}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")


  }
}

这是我在ViewController中的代码(我正在使用ARKit)

   let tempShip = Ship()
    tempShip.position = SCNVector3(0.1,0.1,0.1)

    sceneView.scene.rootNode.addChildNode(tempShip)

我想我错过了一些基本的东西。

3 个答案:

答案 0 :(得分:1)

您可能尚未创建SCNScene并将其添加到您的视图中。至少在您发布的代码中没有任何迹象。你需要像

这样的东西
sceneView.scene = SCNScene()

或使用SCNScene init方法之一创建它。

然后您将拥有一个可以挂起节点的场景。别忘了添加灯光和相机。

另外:不要继承SCNNode。请改用扩展程序。如果您继承SCNNodeSCNScene,则无法使用Xcode场景编辑器。请参阅SceneKit editor set custom class for node

答案 1 :(得分:1)

您应该看到警告您的节点变量未被使用,您需要在节点上设置几何体。将您的init方法更改为:

SELECT sales_price, fxtoEUR, (sales_price / fxtoEUR) AS priceEUR FROM scrapes;

答案 2 :(得分:0)

SCNView的场景属性是可选的。将最后一行更改为:

type