Получение tileGroup из позиции skSpriteNode - PullRequest
0 голосов
/ 21 сентября 2019

Здравствуйте, я работаю над небольшой игрой, которая происходит в шахматном стиле SKtilemap.При появлении врагов я хотел бы, чтобы они появлялись только на светлых клетках (а также только в верхней половине карты, а не на персонаже игрока).Для этого я повторяю цикл while, чтобы попытаться проверить, какой тип tileGroup находится под случайно выбранными строкой и столбцом.К сожалению, я получаю сообщение об ошибке:

Тип выражения '(Int, Int) -> SKTileGroup?'неоднозначно без дополнительного контекста

Когда я пытаюсь переместить эту проверку tileGroup в другую функцию, я не получаю эту ошибку, но напечатанная tileGroup выглядит следующим образом: SKTileGroup: 0x600003ce3b10> вместо имени tileGroup.

Спасибо!

func setupEnemies() {
    // sizes enemy
    enemy = SKSpriteNode(imageNamed: "enemy")
    let height = enemy.size.height
    let scaleFactor = grid.tileSize.height / height
    enemy.setScale(scaleFactor)

    let numberOfRows = UInt32(grid.numberOfRows)
    let numberofCols = UInt32(grid.numberOfColumns)

    // initializes enemy position
    var randomRow = Int(arc4random_uniform(numberOfRows))
    var randomCol = Int(arc4random_uniform(numberofCols))

    // checks to make sure enemy position is in the top half of the board, is not located on the player character, and is only on light tiles.
    while randomRow < (numberOfRows / 2) || (randomRow == grid.tileRowIndex(fromPosition: knight.position) && randomCol == grid.tileColumnIndex(fromPosition: knight.position)) || (grid.tileGroup(atColumn: randomCol, row: randomRow) == "dirtDark Tile") {
        randomRow = Int(arc4random_uniform(numberOfRows))
        randomCol = Int(arc4random_uniform(numberofCols))


    }


    // add enemy to board.
    enemy.position = grid.centerOfTile(atColumn: randomCol, row: randomRow)
    addChild(enemy)

}

1 Ответ

0 голосов
/ 22 сентября 2019

Я понял это сам.Очень простое решение, просто нужно запросить название плитки следующим образом:

grid.tileGroup(atColumn: randomCol, row: randomRow)?.name == "DirDark Tile"
...