概述
详细
说实话这个2D游戏实战的入门看的我脑浆子都沸腾了, 好多新的概念涌入, 没做过游戏开发的我表示真的难以接受, 吸收效率与之前相比也下降好多, 不过越往后学, 就能够加深对之前知识的掌握, 这可能也是看书的好处吧, 今天我也把对瓦片地图的一些学习经验记录下来供大家探讨.
说实话, 我很推荐Ray家的资源, 由浅入深手把手的教学, 内容前后呼应, 看几本书就能涵盖国内4个月培训班的课程体系. 遵循本系列一贯的风格, 我们还是从基础的API开始看起, 对API掌握熟练的话, 多敲两个Demo就能够基本的上手任何项目了.
一、瓦片地图技术要点
1、SKTileMapNode
@available(iOS 10.0, *)
open class SKTileMapNode : SKNode, NSCopying, NSCoding
public init(tileSet: SKTileSet, columns: Int, rows: Int, tileSize: CGSize)
open var numberOfColumns: Int
open var numberOfRows: Int
open var tileSize: CGSize
open var mapSize: CGSize { get }
open var tileSet: SKTileSet
open var colorBlendFactor: CGFloat
open func tileDefinition(atColumn column: Int, row: Int) -> SKTileDefinition?
open func tileGroup(atColumn column: Int, row: Int) -> SKTileGroup?
open func setTileGroup(_ tileGroup: SKTileGroup?, forColumn column: Int, row: Int)
open func tileColumnIndex(fromPosition position: CGPoint) -> Int
open func tileRowIndex(fromPosition position: CGPoint) -> Int
open func centerOfTile(atColumn column: Int, row: Int) -> CGPoint
-
init(tileSet: SKTileSet, columns: Int, rows: Int, tileSize: CGSize) 瓦片地图节点的初始化方法
-
numberOfColumns 瓦片地图的列数
-
numberOfRows 瓦片地图的行数
-
tileSize 瓦片地图中每个瓦片的尺寸
-
mapSize 瓦片地图的尺寸
-
tileSet 瓦片地图的瓦片集
-
colorBlendFactor 瓦片的渲染着色
-
tileDefinition(atColumn column: Int, row: Int) -> SKTileDefinition? 根据列数和行数返回瓦片定义
-
tileGroup(atColumn column: Int, row: Int) -> SKTileGroup? 根据列数和行数返回瓦片组
-
setTileGroup(_ tileGroup: SKTileGroup?, forColumn column: Int, row: Int) 根据列数和行数设置瓦片组
-
tileColumnIndex(fromPosition position: CGPoint) -> Int 根据瓦片位置返回瓦片在瓦片地图中列数下标
-
tileRowIndex(fromPosition position: CGPoint) -> Int 根据瓦片位置返回瓦片在瓦片地图中行数下标
2、SKTileSet
@available(iOS 10.0, *)
open class SKTileSet : NSObject, NSCopying, NSCoding
public init(tileGroups: [SKTileGroup])
open var tileGroups: [SKTileGroup]
open var name: String?
open var defaultTileGroup: SKTileGroup?
open var defaultTileSize: CGSize
open var type: SKTileSetType
@available(iOS 10.0, *)
public enum SKTileSetType : UInt {
case grid
case isometric
case hexagonalFlat
case hexagonalPointy
}
-
init(tileGroups: [SKTileGroup]) 根据瓦片组初始化瓦片集
-
tileGroups 瓦片组