как изменить группу плиток SpriteKit для тайла в карте тайлов? - PullRequest
1 голос
/ 17 февраля 2020

Моя цель - при каждом касании плитки менять цвет плитки с серого на зеленый. Окончательные эффекты можно увидеть на фотографиях: enter image description here

enter image description here

Решение, которое я попробовал, состоит в том, чтобы 1. рассчитать положение строки и столбца текущей плитки в соответствии с касанием CGPosition

func currentTileCalculator (){
        let column = MTileMap.tileColumnIndex(fromPosition: firstTouch)
        let row = MTileMap.tileRowIndex(fromPosition: firstTouch)
        let currentTile = MTileMap.tileDefinition(atColumn: column, row: row)
        print("column: ", column, "row: ", row)
        currentTileTuple.column = column
        currentTileTuple.row = row
    }
используйте флаг canColor, чтобы убедиться, что касание находится внутри буквы М, поэтому мы не заканчиваем окрашивать плитки вне буквы М.
 func canColorCalculator(){
       var touchedTile = MTileMap.tileDefinition(atColumn: currentTileTuple.column, row: currentTileTuple.row)

       if let _ = currentTouchedTile?.userData?.value(forKey: "grey square"){
           canColor = true
           print("you can color now :)")
       }else{
           print("you cannot color :(")
           canColor = false
       }
   }
изменить currentTile с группы плиток серого цвета на группу плиток зеленого цвета. Я не знаю, как написать код для этого шага. Я пытался изменить текстуры currentTouchedTile, но это не сработало.
currentTouchedTile?.textures[0] = SKTexture(imageNamed: "greenColor.png")
...