繁体   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