Я работаю над игрой, в которой игрок перемещается по космической станции, состоящей из плиток (называемых частями, наследующими SKSpriteNode). Одна из этих частей - «Источник».
Вот полезное изображение.
![Here is a helpful image.](https://i.stack.imgur.com/Q1PTL.png)
В игре астероиды могут поразить космическую станцию и привести к разрушению плиток. , Когда это происходит, мне нужно проверить, все ли плитки все еще подключены к источнику. Если это не так, их нужно удалить со станции (не может быть плавающих плиток!). Полезный момент: у каждой плитки есть имя «T | Пустой» или для источника «T | Source». Кроме того, функция receiveConnectedTiles просто находит плитки вверх, вниз, влево и вправо от части.
То, что я пробовал
func checkIfConnectedToSource(_ part: SpaceStationPart) -> Bool {
var foundSource = false
let splitArray1 = part.name?.components(separatedBy: "|")
if splitArray1?[1] == "Source" {
foundSource = true
}
while !foundSource {
let connections = part.obtainConnectedTiles(scene: self)
if connections.count != 0 {
for i in 0..<connections.count {
let splitArray = connections[i].name?.components(separatedBy: "|")
if splitArray?[1] != "Source" {
if checkIfConnectedToSource(connections[i]) {
foundSource = true
}
} else {
foundSource = true
}
}
} else {
print("Connections was 0!")
}
}
return foundSource
}
Я пробовал это , но он бросил «EXC_BAD_ACCESS» в строке, когда я нахожу компоненты имени, хотя я не уверен, почему.
Плитки также всегда находятся в сетке, на расстоянии 100 точек друг от друга.
Итак, вопрос сводится к следующему: Как я могу проверить, подключен ли SKSpriteNode к другому SKSpriteNode, иногда косвенно?