将背景图像添加到ScnScene

时间:2015-08-13 17:30:12

标签: xcode swift sprite-kit scenekit scnnode

我有一个使用SpriteKit和发射器粒子(sks)的应用程序,我发现它不像Scene kit的粒子(scnp)那么逼真。所以我希望将其纳入SKScene,但我不确定这是否可行。所以我决定创建一个SCNScene和粒子(scnp)。但是我想添加背景图像,唯一的3D效果就是粒子。任何人都可以帮我设置我的SCNScene的背景图像。传统上我会将它添加到SKScene,但我无法在线找到任何有关SceneKit的帮助。

 let backgroundNode = SKSpriteNode(imageNamed: "backgroundImage")
    backgroundNode.size = view.frame.size
    backgroundNode.position = CGPointMake(view.frame.size.width/2, view.frame.height/2)

    self.addChild(backgroundNode)

提前谢谢

3 个答案:

答案 0 :(得分:12)

let scnScene = SCNScene()
scnScene.background.contents = UIImage(named: "earth.jpg")

答案 1 :(得分:3)

与@Kusal Shrestha完全相同的答案,但我能够使用一堆不同的技术放置渐变背景。仍然非常简单和有用。

    const CGFloat DIVISOR = 255.0f;
    CIColor *bottomColor = [CIColor colorWithRed:(CGFloat)0xee / DIVISOR green:(CGFloat)0x78 / DIVISOR blue:(CGFloat)0x0f / DIVISOR alpha:1];
    CIColor *topColor = [CIColor colorWithRed:0xff / DIVISOR green:0xfb / DIVISOR blue:0xcf / DIVISOR alpha:1];
    SKTexture* textureGradient = [SKTexture textureWithVerticalGradientofSize:scnview.frame.size topColor:topColor bottomColor:bottomColor];
    UIImage* uiimageGradient = [UIImage imageWithCGImage:textureGradient.CGImage];
    self.background.contents = uiimageGradient;

在哪里"自我"是SCNScene的子类。

此示例需要此处的纹理类别:https://gist.github.com/Tantas/7fc01803d6b559da48d6

答案 2 :(得分:0)

我尝试使用@Kusal Shresthas答案。但是,当我将图像文件放在scnassets中时,图像没有加载。但是,当我将文件放入xcassets时,它可以正常工作。

scnScene.background.contents = UIImage(named: "earth")