我正在用SceneKit添加一个带有3D战场的纸牌游戏。
战场具有一定的深度,其中3D对象的顶部是城堡的顶部,底层在z轴上进一步向下,代表地面。
当玩家手中有牌时,我想在可能的顶层将它们绘制为uiview,我已经能够通过添加我的gamecontrolerview来做到这一点,它将牌的uiview作为子视图,这将其直接置于3D场景的顶部。
卡片UI放置在战场3d场景上方
我想在3D对象内绘制不同深度(z轴)的卡的uiview -有时将它们绘制在地面上的层上,有时将它们绘制在顶部的层上。
我已经能够添加更多的3D元素在不同深度的战场通过添加childNodes到我的主场景的rootNode,像这样:
SCNScene *enemy_life = [SCNScene sceneNamed:@"battle_enemy_life.dae"];
[myView.scene.rootNode addChildNode:enemy_life.rootNode];
但我特别需要添加uiview而不是更多的SCNScenes。
我如何在底部深度设置一个SCNView,在上面绘制UI视图,设置另一个SCNView增长到更高的z轴深度,在上面绘制uiview,并让它们共享相同的相机/屏幕?
我会用SpriteKit来绘制卡片,而不是UIKit。
一个SceneKit场景可以显示一个SpriteKit场景作为一个覆盖,你可以使用尽可能多的精灵,因为你需要你的卡。
使用SpriteKit和SceneKit是有效的。使用UIKit和SceneKit会使你的帧率下降。
检查SCNSceneRenderer: overlaySKScene.