1

最新バージョンの Xcode で簡単なゲームを作ろうとしています。とてもシンプルな TileMap を使用します。すべてのタイルに物理体を追加する方法を見つけようとしています。各タイルの位置を取得し、そこに SKNode を追加することに行き詰まっています。各タイルの位置を取得する方法は非常に役立ちます。以下のコードはすべて didMove(to: view) にあります

let tileSize = grassTileMap.tileSize
let halfWidth = CGFloat(grassTileMap.numberOfColumns) / 2.0 * tileSize.width
let halfHeight = CGFloat(grassTileMap.numberOfRows) / 2.0 * tileSize.height

for node in self.children {
    if node.name == "grassTileMap" {
        grassTileMap = node as! SKTileMapNode
    }
    
    for col in 0..<grassTileMap.numberOfColumns {
        for row in 0..<grassTileMap.numberOfRows {
            let tileDef = grassTileMap.tileDefinition(atColumn: col, row: row)
            if tileDef == nil {
                print("no tile here")
            } else {
                
                let hitboxTileNode = SKSpriteNode(color: UIColor.clear, size: CGSize(width: 35.5, height: 35.5))
                
                // I need to set the position of each tile to hitBoxTileNode here
                
                hitboxTileNode.anchorPoint = CGPoint(x: 0, y: 0)
                hitboxTileNode.physicsBody = SKPhysicsBody(edgeLoopFrom: hitboxTileNode.frame)
                hitboxTileNode.physicsBody?.affectedByGravity = false
                hitboxTileNode.physicsBody?.isDynamic = false
                hitboxTileNode.physicsBody?.pinned = false
                hitboxTileNode.physicsBody?.restitution = 0
                hitboxTileNode.physicsBody?.friction = 0
                addChild(hitboxTileNode)
            }
        }
    }
}
4

0 に答える 0