如何在 SpriteKit 中将磁贴更改为另一个(或空白)?

Posted

技术标签:

【中文标题】如何在 SpriteKit 中将磁贴更改为另一个(或空白)?【英文标题】:How do I change a tile to another (or a blank) in SpriteKit? 【发布时间】:2017-07-26 03:17:27 【问题描述】:

所以我正在尝试使用 tile map 节点在 Xcode 8.3.3 中编写一个国际象棋应用程序,其中一个 8x8 tile map 包含每个 tile 的一块或一个空白空间(在 GameScene.sks 中制作,而不是使用代码) .我想做的是改变瓷砖。例如,如果有人移动一个棋子,我想将起始空间从一个棋子更改为一个空格,然后将结束格从一个空格更改为一个棋子。瓦片组位于一个名为 pieces.sks 的文件中,我在 File->New->File->SpriteKit Tile Set 中创建了该文件。 这是我到目前为止在 GameScene.swift 中的内容(我取出了与问题无关的内容),目标是在代码运行时将单个正方形更改为白色主教:

class GameScene: SKScene 

    var pieces : SKTileMapNode?

    override func didMove(to view: SKView) 

        self.pieces = self.childNode(withName: "//pieces") as? SKTileMapNode

        if let pieces = self.pieces 
            pieces.setTileGroup(backgroundGroup*, forColumn: 4, row: 4) //arbitrary square I'm using for testing
        
        

所以pieces.setTileGroup 让我感到困惑有几个原因,例如“forColumn”而不是简单的“column”。我从 Apple Developer Documentation 中得到了它,我不确定这是做我想做的事情是正确的。 backgroundGroup(在代码中加星标)参数是一个占位符。我不知道如何填写那里的白人主教。 谢谢!

【问题讨论】:

【参考方案1】:

我在https://www.raywenderlich.com/137216/whats-new-spritekit-ios-10-look-tile-maps 找到了答案,这对于一般的平铺地图非常有用。

我补充说:

let tileSet = SKTileSet(named: "Pieces")

pieces.setTileGroup(tileSet?.tileGroups[0], forColumn: 4, row: 4)

原点位于左下角,标准笛卡尔平面的第一象限也是如此。

【讨论】:

以上是关于如何在 SpriteKit 中将磁贴更改为另一个(或空白)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Vue Js 中将数据值从一个组件更改为另一个组件?

如何在Java或Groovy中将列表值动态更改为另一个列表

等效于 SpriteKit 中的弹出框

SpriteKit:为什么SKView在一个高度消失但出现在另一个高度? SKView的最大高度是多少?

在laravel 8中将用户的角色更改为另一个角色

在 SpriteKit 中将相机夹在场景的背景周围