SpriteKit:将多个SKSpriteNodes添加到场景中

卢卡斯·科尔(LukasKöhl)

我有一张图像,应该直接在线(例如一堵墙)中多次添加到场景中。为此,我想出了一个简单的算法来更改x和y坐标。

    func addBackground(){
    bg = SKSpriteNode(imageNamed: "background")
    let fieldsX = 5
    let fieldsY = 8
    var xPos = CGFloat()
    var yPos = CGFloat()
    let fieldsWidth = screenWidth / CGFloat(fieldsX)
    let sumField = fieldsX * fieldsY

    bg.size = CGSize(width: fieldsWidth, height: fieldsWidth)
    for(var i = 0; i < sumField; i++){
        bg.position = CGPoint(x: xPos, y: yPos)
        self.addChild(bg)
        xPos = xPos + fieldsWidth
        if(i % fieldsX == 0){
            yPos = yPos + fieldsWidth
            xPos = 0
        }
    }
}

因此,让我向您解释我的代码。首先,我用图像创建一个SKSpriteNode。之后,有几个变量需要填充场景。因此,我希望图像在x轴上出现5次,在y轴上出现8次。为了确保它们具有相同的大小,它们是正方形。每次在for循环中,x坐标都增加屏幕的1/5。每第5个循环,x坐标将重置,y坐标将提高屏幕的1/8。应创建所有40个节点中的所有节点并将其添加到场景中。当我运行程序时,由于未捕获的异常,在AppDelegate中出现错误。它还说:尝试添加一个已经具有父级的SKNode。有没有一种方法可以将40个节点添加到场景而不会出错?

阿列克谢·皮丘科夫(Alexey Pichukov)

您没有在场景中添加许多节点,而是尝试将一个节点添加40次,这就是为什么第二次该节点有一个父节点并得到错误。您需要在“ for”内部创建对象节点

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法将多个Pod资源添加到场景中

为了将多个对象添加到场景中,处理触摸动作的最佳方法是什么?

MouseEvent-将圆添加到场景

将节点添加到场景视图的问题

无法将精灵添加到场景

在SpriteKit中,是否可以通过编程方式将元素添加到场景中,因此当打开.sks时,它们会显示吗?

如何找到添加到场景中的新项目?

BooleanProperty,其值取决于是否将节点添加到场景中

无法将节点添加到场景中(Sprite Kit)

如何将动画 gif 添加到场景中?

在SpriteKit游戏中将UIView添加到场景的后面

如何获取场景中的元素JavaFX /将对象动态添加到场景

将SKLabelNode添加到场景工具包视图

将Hud图层添加到场景Cocos2d-3

如何在Unity中通过单击按钮将对象添加到场景?

可以在ThreeJS中将色相添加到场景中吗?

如何在Three.js中返回对象,而不是将其添加到场景中?(FBXLoader)

遍历数组并将对象添加到场景中的每个条目将对象添加到相同位置

如何从Qtablewidget拖动图像并将其添加到场景?

在Three.js中将网格添加到场景之前,如何设置网格的位置

Unity,编辑时脚本,在GameObject上添加到场景事件

如何在Three.js中将画布绘图添加到场景?

将节点添加到多个场景//窗格时的场景图行为

Swift-将背景图像添加到Spritekit场景

在Swift中将视图添加到SpriteKit场景

如何为Java中已经创建的新组件创建FXML文件,而不是将其添加到场景生成器中?

如何将SpriteKit中的单个游戏场景添加到普通的Single View Swift应用程序中

SpriteKit:将SKSpriteView添加到视图

在iOS上,可以将多个CIFilter添加到SpriteKit节点吗?