Моя цель - при каждом касании плитки менять цвет плитки с серого на зеленый. Окончательные эффекты можно увидеть на фотографиях:
Решение, которое я попробовал, состоит в том, чтобы 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")