[英]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!")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.