Я задаю этот вопрос, потому что я не нашел решения для такого рода проблем. На самом деле поддержка Hex-карт не очень популярна.
Я делаю игру с помощью SpriteKit Framework. Я использую SktileMapNode с шестиугольной картой с 1 набором плиток из 4 групп.
Узел игрока перемещается по каждой плитке, чего я не хочу, так это то, что когда он перемещается по определенной плитке, может быть запущено какое-то событие (печать, функция, Sktransition), но на данный момент я застрял на простом обнаружении этих плиток.
Я устанавливаю пользовательские данные (как bool) и применяю их в коде, но ничего не происходит, даже с событием касания на плитке.
extension GameScene {
func move(theXAmount:CGFloat , theYAmount:CGFloat, theAnimation:String ) {
let wait:SKAction = SKAction.wait(forDuration: 0.05)
let walkAnimation:SKAction = SKAction(named: theAnimation, duration: moveSpeed )!
let moveAction:SKAction = SKAction.moveBy(x: theXAmount, y: theYAmount, duration: moveSpeed )
let group:SKAction = SKAction.group( [ walkAnimation, moveAction ] )
let finish:SKAction = SKAction.run {
let position = self.thePlayer.position
let column = self.galaxieMapnode.tileColumnIndex(fromPosition: position)
let row = self.galaxieMapnode.tileRowIndex(fromPosition: position)
if let tile:SKTileDefinition = self.galaxieMapnode.tileDefinition(atColumn: column, row: row) {
if let tileBoolData = tile.userData?["wormholeTile"] as? Bool {
if (tileBoolData == true) {
print("Wormhole touched")
}
}
} else {
print("different tile")
}
}
Запускается только вывод «другая плитка».
Любая помощь приветствуется.
Ссылка на пример изображения: то, что я хочу