iOS - 将2D图像添加到场景包游戏中

Con*_*man 5 ios scenekit

你好,我不能为我的生活解决如何使用scenekit在场景中添加2D图像甚至可能吗?我想要完成的是在2D背景图像上有一个3D飞行平面,但背景图像无法覆盖整个屏幕.感谢任何可以提供帮助的人

Ben*_* Lu 8

其他人在上面说了很多好的建议.

让我用不同的场景总结每个解决方案:

  • 使用scnScene.background:最简单,但全屏和静态.您无法在场景的较小区域中显示,也无法自定义转换.

  • 使用scnScene.overlaySKScene显示2D SKScene和添加图像精灵.这可能适合您的情况.如果您想要静态但具有可配置的转换,这是一个不错的选择.特别overlaySKScene推荐Apple在您的3D场景中创建HUD.

    但是,如果您希望2D内容跟踪3D运动,则需要每帧从3D空间到2D空间进行一些坐标转换.坏消息是这项工作由CPU完成,这将增加性能拖累.(相信我,这也让我感到沮丧!)

  • 使用SCNNode具有SCNPlane几何形状,并设置diffuse.content与图像; 添加SCNBillBoardConstraint到节点以确保它始终面向摄像头.

    最灵活的.但是,如果你的相机不是正交的,那么随着相机fov的变化,图片会变焦,这看起来不是2D,而是一个悬挂的3D广告牌.


Bea*_*lle 2

您可以使用SCNScene 上的背景属性来设置背景图像。

\n\n
scnScene.background.contents = UIImage(named: "myImage")\n
Run Code Online (Sandbox Code Playgroud)\n\n

内容

\n\n
\n

您可以使用以下任意类型设置此属性的值:\n

\n\n

颜色(NSColor/UIColor 或 CGColorRef),指定材质\xe2\x80\x99s 表面上的常量颜色\n

\n\n

图像(NSImage/UIImage 或 CGImageRef),指定要映射到材质\xe2\x80\x99s 表面的纹理\n

\n\n

指定图像文件位置的 NSString 或 NSURL 对象

\n\n

六个图像的数组 (NSArray),指定立方体贴图的面

\n\n

核心动画层(CALayer)

\n\n

纹理(SKTexture、MDLTexture、MTLTexture 或 GLKTextureInfo)

\n\n

Sprite Kit 场景 (SKScene)

\n
\n