SKTileMapNode tileRowIndex всегда возвращает 0 для отрицательного значения за пределами его границ - PullRequest
0 голосов
/ 07 марта 2020
let tileRow = self.tileMap.tileRowIndex(fromPosition: point)

Допустим, у tileMap есть 20 строк, 20 столбцов, каждый 100x100. Если point является положительным значением, превышающим границы tileMap, он вернет 20 (считая от 0, поэтому индекс предназначен для следующей несуществующей строки). Если point является отрицательным значением с абсолютным значением, превышающим границы tileMap, он вернет 0, поэтому первая строка, которая действительно существует. Это проблема для проверки, выходит ли игрок за пределы tileMap, потому что он будет продолжать снижаться, так как функция всегда будет возвращать 0 для предыдущего случая.

1 Ответ

1 голос
/ 08 марта 2020

В этом случае, чтобы проверить одну точку из скачков на SKTileMapNode , вы можете использовать:

self.tileMap.contains(pos)

enter image description here

В этом примере вы можете добавлять точки, щелкая, и они меняют цвет в зависимости от того, находятся они внутри или за пределами карты: https://github.com/Maetschl/SpriteKitExamples/blob/master/TileMapExamples/TileMapExamples/GameScene.swift

...