2016-01-04 11 views
6

いくつかの点で、 overlaySKSceneを使用して、インターネット上にいくつかのオーバーレイチュートリアルがあります。SwiftのSCNSceneにSKSceneをオーバーレイする方法はありますか?

私の見解ではコンストラクタSCNViewを使用していません(私は推測しています)(overlaySKSceneの一部です)。 ViewControllerののviewDidLoadで

、基本的にのみMainSceneが作成されます。

viewDidLoad() { 
self.sceneView = MainScene(view: self.view)) } 

...ここにいるが(注:代わりにSCNViewのSCNScene):

class MainScene: SCNScene, SCNPhysicsContactDelegate {... 
init(view:UIView) { 
scnView = view as! SCNView 
super.init() 
scnView.scene = self; (...) } 

シーンが完全に作成されますSKSceneをオーバーレイしたいと思っています。誰がどのように知っていますか?

+0

シーンとビューの違いは、selfSceneView = MainScene – Knight0fDragon

+0

ではありません。overlaySKSceneが機能していない場合は、MainSceneコードにSpriteKitをインポートしなかったためです – Knight0fDragon

答えて

6

SpriteKitオーバーレイは、SceneKitシーンではなく、SceneKitビューになります。ビュー上にシーンをオーバーレイしているため、これは少し混乱します。定義されたリターンSCNSceneとして

self.sceneView = MainScene(view: self.view)) 

は、私はいくつかの可能な誤差源を参照してください。 SCNViewが必要なプロパティに割り当てるとします。 viewが正しく接続SCNViewインスタンスを返していない限り

scnView = view as! SCNView 

がクラッシュします。しかし、あなたが書いたinitの定義には、UIViewが必要です。

どこかに、あなたの意見はSCNViewである必要があります。そのビューは、プロトコルSCNSceneRendererに準拠しているため、overlaySKSceneというプロパティを持ちます(はSCNViewからではなく、そのプロトコルに由来します)。そこで、SKSceneインスタンスを割り当てることができます。あなたはそれを行っている場合は

、その後、あなたのコードはhttps://github.com/halmueller/ImmersiveInterfaces/tree/master/Tracking%20Overlay

も参照してくださいHow do I create a HUD on top of my Scenekit.sceneで、私はSCNViewの上に重ねSKSceneの簡単な例を持って

scnView.scene = self 
scnView.overlaySKScene = theSKScene 

ようになります。

+0

すばらしい例をありがとう!!しかし、シーンに複数のオーバーレイを追加する方法はありますか?提供されたサンプルでは、​​オーバーレイが1つだけ追加されます。複数のテキストや複数のノードに対して、提供されている例(https://github.com/halmueller/ImmersiveInterfaces/tree/master/Tracking%20Overlay)で提供されている同じInformationOverlaySceneを再利用するにはどうすればよいですか? – yaali

+0

オーバーレイシーンは、好きなだけ複雑にすることができます。複数のシーンが必要だと思うなら、それはそれ自身の質問に値するでしょう。 –

関連する問題