У меня есть более 1000 плиток, которые мне нужно использовать. В плитке я могу использовать только одну фотографию из всех плиток, но в Xcode мне нужно разбить плиту в 1000 отдельных плиток. Есть ли способ, чтобы можно было получить плитки с одного изображения, как в плитке?Sktilemapnode загрузка плитки с одного изображения
1
A
ответ
0
0
Если вы все еще нужно, я только что сделал это в игровой площадки:
struct SpriteSheet {
let baseTexture: SKTexture
let rows: CGFloat
let columns: CGFloat
var textureSize: (width: CGFloat, height: CGFloat) {
return (width: baseTexture.textureRect().width/self.columns,
height: baseTexture.textureRect().height/self.rows)
}
init(imageNamed texture: String, rows: CGFloat, columns: CGFloat) {
self.baseTexture = SKTexture(imageNamed: texture)
self.baseTexture.filteringMode = .nearest // best for pixel art
self.rows = rows
self.columns = columns
}
var testTileMap: SKTileMapNode {
let tileSize: CGSize = CGSize(width: 16, height: 16)
let texture = cropTexture(row: 1, column: 10, w: 1, h: 1)
let tileDef = SKTileDefinition(texture: texture, size: tileSize)
let tileGroup = SKTileGroup(tileDefinition: tileDef)
let tileSet = SKTileSet(tileGroups: [tileGroup])
let mapNode = SKTileMapNode(tileSet: tileSet,
columns: 4,
rows: 4,
tileSize: tileSize,
fillWith: tileGroup)
return mapNode
}
func cropTexture(row: CGFloat, column: CGFloat, w: CGFloat, h: CGFloat) -> SKTexture {
assert(row < rows && column < columns && row > 0 && column > 0)
let rect = CGRect(x: textureSize.width * (column - 1),
y: textureSize.height * (self.rows - row),
width: textureSize.width * w,
height: textureSize.height * h)
return SKTexture(rect: rect, in: baseTexture)
}
}
let spriteSheet = SpriteSheet(imageNamed: "dungeon.png", rows: 24, columns: 20)
let node = spriteSheet.testTileMap
Это для spritesheet из 20x24 плитки 16x16 пикселей.
Смежные вопросы
- 1. SKTileMapNode: обнаружение затронутой плитки?
- 2. Загрузка изображения из плитки
- 3. Неверная сортировка изометрического SKTileMapNode?
- 4. Получение GKObstacleGraph для работы с SKTileMapNode
- 5. Xcode - Swift SpriteKit: SKTileMapNode с «физическим разрывом»
- 6. Monogame - Загрузка плитки
- 7. Создайте защитный «мир» с SKTileMapNode
- 8. Phaser.io - Загрузка объектов из плитки
- 9. Предварительная загрузка плитки перед анимацией
- 10. Загрузка плитки для CATiledLayer с NSURLConnection
- 11. Поведение изображения для плитки
- 12. Загрузка листка плитки в Libgdx
- 13. Загрузка с изображения с изображения
- 14. collectionview только загрузка одного изображения в cellForItemAtIndexPath
- 15. Как загрузить сферическую панораму изображения плитки
- 16. Программно создать SKTileMapNode в Swift
- 17. JSTileMap (.tmx) vs Xcode SKTileMapNode
- 18. Рафаэль и бесшовные плитки (изображения)
- 19. Загрузка только одного изображения с сервера, который продолжает отправлять их
- 20. Сделать изображение из изображения плитки
- 21. Создать/загрузить SKTilemapnode без использования файлов SKS/Сцены
- 22. Плитка плитки плитки в буфере изображения Ошибка расчета индекса
- 23. Загрузка изображения с Angularjs
- 24. Загрузка изображения с Django
- 25. Загрузка изображения с $ .ajax
- 26. Загрузка изображения с filepicker.IO
- 27. Загрузка картографической плитки после уровня масштабирования 19
- 28. загрузка ресурсов в плитки и весна mvc
- 29. Загрузка изображения с помощью wget
- 30. Загрузка части большого изображения с диска с помощью Xamarin
Существует способ. Разделите программно изображение и добавьте плитки программно в SKTilemapNode, но я пытаюсь понять это. – Lirf
есть программы на github, которые разработаны в быстрой загрузке карт в Xcode, сделанные в Tiled –