簡體   English   中英

將2D形狀添加到SceneKit

[英]Add 2D Shape to SceneKit

我想在SceneKit中顯示3D模型,但也想在模型中放置一些2D形狀(例如,可以點擊一個圓圈來觸發交互)。

實現此目標的最佳方法是什么?

它應該是什么樣的:

在此處輸入圖片說明

方法未成功:使用了常規的SCNNode ,但高度不高,但這不能用作2D圖形(可能發生更改)

在此處輸入圖片說明

編輯:

  • 現在我將圓圈添加為Sprite Kit節點到疊加視圖

     sceneView.overlaySKScene = SKScene.init(size: sceneView.frame.size) sceneView.overlaySKScene?.addChild(circle) 
  • 我還嘗試獲取相應節點的屏幕坐標,我想在該坐標的前面顯示SpriteKit圓圈:

     func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) { let screenPoint = sceneView.projectPoint(interactionNode!.position) print(screenPoint) circle.position = CGPoint.init(x: CGFloat(screenPoint.x), y: CGFloat(screenPoint.y)) 

    }

但是,sceneView.projectPoint給我非常奇怪的結果,即使該節點顯示在屏幕中間,也有返回的屏幕外范圍...

您想使用overlaySKScene,它將允許您將(高性能)2D Spritekit內容“放置”在Scenekit場景之上。 這是我在應用程序中執行的操作:

首先在HUD中定義所需的Spritekit內容:

class HUD: SKScene {
var shields: SKShapeNode(imageNamed: "shieldGrid")
var crosshairs = SKSpriteNode(imageNamed: "xenonHUD")
public var computerStatus = SKLabelNode()
public var enemyIndicator = SKLabelNode()

func shipHud.flashAlert( alert: String) {
   computerStatus.text = alert
}

然后,在主視圖控制器(在其中實例化SceneView)中,使此類成為場景的概述,並從那里進行控制:

class MyGameViewController: UIViewController, SCNPhysicsContactDelegate, SCNSceneRendererDelegate {
var scnView: SCNView! 
// setup HUD
    shipHud = HUD(size: self.view.bounds.size)
    scnView.overlaySKScene = shipHud
    shipHud.flashAlert("Oh My God!")

}

使用overlaySKScene混合的SceneKit和Spritekit內容 使用overlaySKScene混合的SceneKit和Spritekit內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM