2017-07-26 41 views

回答

10

您可以添加一個SCNPlane並使用SCNLookAtConstraint以使飛機始終看着相機。

可以創建定製的材料和設置它的material properties到:

  • 顏色(的UIColor或CGColor),指定一個恆定的顏色在整個材料表面 一個數字(

  • 指定要在材質表面上映射的紋理的圖像(UIImage或CGImage)

  • 核心動畫層(CALayer)
  • 紋理(SKTexture,MDLTexture,MTLTexture,或GLKTextureInfo)
  • 甲SpriteKit場景(SKScene)

,也可以顯示利用CoreAnimation或SpriteKit但

SceneKit動畫內容不能使用已在別處顯示的圖層(例如,UIView對象的背層)


下面是一個例子使用SpriteKit:

  1. 創建SpriteKit場景:

例如:

let skScene = SKScene(size: CGSize(width: 200, height: 200)) 
skScene.backgroundColor = UIColor.clear 

let rectangle = SKShapeNode(rect: CGRect(x: 0, y: 0, width: 200, height: 200), cornerRadius: 10) 
rectangle.fillColor = #colorLiteral(red: 0.807843148708344, green: 0.0274509806185961, blue: 0.333333343267441, alpha: 1.0) 
rectangle.strokeColor = #colorLiteral(red: 0.439215689897537, green: 0.0117647061124444, blue: 0.192156866192818, alpha: 1.0) 
rectangle.lineWidth = 5 
rectangle.alpha = 0.4 
let labelNode = SKLabelNode(text: "Hello World") 
labelNode.fontSize = 20 
labelNode.fontName = "San Fransisco" 
labelNode.position = CGPoint(x:100,y:100) 
skScene.addChild(rectangle) 
skScene.addChild(labelNode) 
  • 創建平面並將場景設置爲您的材質屬性
  • 例如

    let plane = SCNPlane(width: 20, height: 20) 
    let material = SCNMaterial() 
    material.isDoubleSided = true 
    material.diffuse.contents = skScene 
    plane.materials = [material] 
    let node = SCNNode(geometry: plane) 
    scene.rootNode.addChildNode(node) 
    
  • 動畫場景
  • 例如

    labelNode.run(SKAction.repeatForever(SKAction.rotate(byAngle: .pi, duration: 2))) 
    

    enter image description here

    +0

    感謝答覆,當我在ARKit例如 添加以下代碼它終止當我嘗試添加平面節點在我的場景 self.sceneView.scene.rootNode.addChildNode(節點) 它給出了這個錯誤 「validateDepthStencilState:3675:失敗的斷言'MTLDepthStencilDescriptor使用frontFaceStencil但MTLRenderPassDescriptor有一個零模板貼圖紋理'」 任何想法?請幫助 – Developer

    +0

    我只有在SceneKit操場上測試代碼。我不知道爲什麼它不應該在ARKit – orangenkopf

    +0

    謝謝你的幫助,因爲這行skScene.addChild(矩形) 需要刪除該行來運行它 – Developer