[SpriteKit] 制作瓦片地图小游戏

本文介绍如何利用SpriteKit制作瓦片地图小游戏,包括SKTileMapNode、SKTileSet、SKTileGroup等核心概念,并提供代码下载链接,通过详细步骤指导读者实现游戏场景的设置与操作。
摘要由CSDN通过智能技术生成

概述

SpriteKit制作瓦片地图游戏,深入了解2D游戏制作过程

详细

说实话这个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 瓦片组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值