SKAToolKit, 使苹果工具包的Sprite更易于使用的工具工具包

分享于 

12分钟阅读

GitHub

  繁體 雙語
Tool Kit to make Apple's Sprite Kit easier to use.
  • 源代码名称:SKAToolKit
  • 源代码网址:http://www.github.com/SpriteKitAlliance/SKAToolKit
  • SKAToolKit源代码文档
  • SKAToolKit源代码下载
  • Git URL:
    git://www.github.com/SpriteKitAlliance/SKAToolKit.git
    Git Clone代码到本地:
    git clone http://www.github.com/SpriteKitAlliance/SKAToolKit
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/SpriteKitAlliance/SKAToolKit
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    #SKAToolKit SKAToolKit是一个免费的工具集,由Sprite套件联盟创建,用于苹果的Sprite工具包框架。 最大的特点是 SKATiledMap,它是使用自由平铺贴图编辑器 http://www.mapeditor.org/ 创建地图的简单解决方案。

    of公司联盟非常乐意提供免费的SKAToolKit,无需保证或者保证( 有关详细信息,请参阅下面的许可证)。 如果有一个特性缺失或者你想要添加,请在 skyler@skymistdevelopment.com 电子邮件 Skyler。

    ##SKAToolKit 安装说明

    • 将SKAToolKit文件夹中的所有文件复制到你的项目中
    • 导入SKATiledMap或者任何你想要的SKA文件
    • 在项目文件的"链接框架和库"部分链接到 libz.dylib

    ##SKATiledMap 这是一个 sprite node,表示以平铺方式创建的地图。 当前SKATiledMap只支持JSON格式。 添加JSON文件和用于你的tiles的任何图像到你的项目中。

    支持 ###Resolution

    ####Normal Tilesets很重要,使你的地图可以使用 1x 资产平铺。 当你准备好把它放到你的应用中最好的结果提供 1 x,@2x, 和 @3x 资产。 请记住,SpriteKit和纹理大小存在限制。 确保 1x 资产不超过 675 x 675 ( 当 3x 时,在 2048限制下,它们将为 2025 )。 就像平铺你只需要导入用于创建地图的图像。 将这些图片放到资产目录中以获得最佳效果。 不需要plist文件或者引用文件夹。

    ####Collection Tilesets平铺支持集合 Tilesets。 确保你使用 1x 图形设计了地图。 你可以提供 1x 和 2x. atlas 或者。atlasc文件夹,包含用于创建平铺映射的相同图像名称。 记得将. atlas 和。atlasc文件夹添加到Xcode作为参考文件夹。 在atlas文件夹中,@3x 不受支持。

    ###Supported 映射类型

    ####TMX TMX支持处于早期阶段,但现在支持。 确定你包括你的. tmx 并定位所有用于地图的图片,并导入那些图片的任何 @2x 和 @3x 版本,或者创建atlas文件夹的文件。 有关更多信息,请参见分辨率支持。 SKATiledMap在查找JSON文件之前会查找一个TMX文件。 如果缺少功能,请联系 skyler@skymistdevelopment.com

    
    SKATiledMap *map = [[SKATiledMap alloc]initWithMapName:@"yourMapName"];//name of your TMX file
    
    
    
    

    ####JSON SKATileMap支持以JSON格式导出的平铺映射。 在平铺导出映射为JSON文件并将它的导入到应用程序中。 确定你找到了所有用于地图的图片,并将那些图片的@2x 和 @3x 版本导入到或者创建atlas文件夹中。 有关更多信息,请参见分辨率支持。

    要创建映射,调用这里方法是一个简单的问题。

    
    SKATiledMap *map = [[SKATiledMap alloc]initWithMapName:@"yourMapName"];//name of your JSON file
    
    
    
    

    ###Useful 方法//Use 将地图上的贴图CGPoint转换为地图上的x y 索引。 这对于查看玩家周围的瓦片或者手动碰撞检测很有用。 - ( CGPoint ) indexforpoint: ( CGPoint ) 点;

    
    //This methods will return SKASprites around a given point or index on the map.
    
    
    -(NSArray *)tilesAroundPoint:(CGPoint)point inLayer:(NSInteger)layer;
    
    
    -(NSArray *)tilesAroundIndex:(CGPoint)point inLayer:(NSInteger)layer;
    
    
    
    //This method can be used to to get a specific tile on a specific layer
    
    
    -(SKASprite *)spriteOnLayer:(NSInteger)layerNumber indexX:(NSInteger)x indexY:(NSInteger)y;
    
    
    
    //This method is used to get custom named objects that you may have made in Tiled for spawning enemies, player start positions, or any other custom game logic you made a object for.
    
    
    -(NSArray *)objectsOnLayer:(NSInteger)layerNumber withName:(NSString *)name;
    
    
    
    

    ###Culling 特征SKATiledMap现在有一个剔除特性。 当你需要更好的性能时,可以用于大地图。 方法优化为在更新循环中调用,并将每个sprite设置为隐藏在指定范围之外。

    
    CGPoint playerIndex = [self.map indexForPoint:self.player.position];
    
    
    [self.map cullAroundIndexX:playerIndex.x indexY:playerIndex.y columnWidth:5 rowHeight:5];//for best resutls set a little wider/higher than your viewing area
    
    
    
    

    SKAMiniMap Example

    Culling Performance

    ###Using 层所有图层都可用。 做很酷的事情。 例如你可以拍摄一个图层,为你可能拥有的光精灵添加一个闪烁效果。

    
    SKAction *fadeOut = [SKAction fadeAlphaTo:0 duration:.5];
    
    
    SKAction *fadeIn = [SKAction fadeAlphaTo:1 duration:.5];
    
    
    
    SKAction *repeat = [SKAction repeatActionForever:[SKAction sequence:@[fadeOut, fadeIn]]];
    
    
    
    SKASpriteLayer *layer = self.map.spriteLayers[2];
    
    
    
    [layer runAction:repeat];
    
    
    
    

    ###SKATiledMap 自动跟随功能SKATiledMap具有自动跟随功能。 如果你想让地图定位在屏幕上并且让玩家在屏幕上,这是一个很好的特性。 使用这里特性将autoFollowNode设置为SKNode的任何子类,并调用场景更新方法中的贴图更新方法。

    
    self.player = [SKATestPlayer spriteNodeWithColor:[SKColor greenColor] size:CGSizeMake(40, 80)];
    
    
    self.player.zPosition = 20;
    
    
    self.player.position = CGPointMake(400, 400);
    
    
    [self.map addChild:self.player];
    
    
    
    self.map.autoFollowNode = self.player;
    
    
    
    -(void)update:(NSTimeInterval)currentTime
    
    
    {
    
    
     [self.map update];
    
    
    }
    
    
    
    

    创建平铺贴图SKATiledMap时的###Auto 碰撞生成将创建物理实体,如果在砖块或者对象上找到这些属性。

    • SKACollisionType: SKACollisionTypeRect

    针对 ignoresSiblingOrder 优化 ###ZPosition 和优化 SKATiledMap。 确保你将SKView设置为 skView.ignoresSiblingOrder = YES;,zPosition如下所示。 层一层将位于 zPosition 0,第二层将位于 zPosition 1处。 SKATiledMap还可以最大限度地调用绘图。 你将拥有与你的sprite地图一样多的绘制调用。

    在不创建任何自定义代码的情况下,使用 ##SKATestHud 和SKATestPlayer来快速测试地图。 SKATestHud默认zPosition为 100.

    例子

    
    self.player = [SKATestPlayer spriteNodeWithColor:[SKColor greenColor] size:CGSizeMake(40, 80)];
    
    
    self.player.zPosition = 20;
    
    
    self.player.position = CGPointMake(400, 400);
    
    
    [self.map addChild:self.player];
    
    
    
    SKATestHud *testHud = [SKATestHud hudWithScene:self.scene withPlayer:self.player];
    
    
    
    [self addChild:testHud];
    
    
    
    

    ##SKAButtonSprite SKAButtonSprite是一个简单的sprite按钮。 它可以使用任何SKSpriteNode或者说服方法来创建。 必须设置 userInteractionEnabled = 是,

    可选的委托方法

    
    -(void)buttonSpritePressed:(SKAButtonSprite *)buttonSprite;
    
    
    -(void)buttonSpriteDown:(SKAButtonSprite *)buttonSprite;
    
    
    -(void)buttonSpriteUp:(SKAButtonSprite *)buttonSprite;
    
    
    
    

    例子

    
    self.buttonLeft = [SKAButtonSprite spriteNodeWithColor:[UIColor blueColor] size:CGSizeMake(50, 50)];
    
    
    self.buttonLeft.position = CGPointMake(self.buttonLeft.size.width/2+padding, self.buttonLeft.size.height/2+padding);
    
    
    self.buttonLeft.name = @"buttonLeft";
    
    
    self.buttonLeft.userInteractionEnabled = YES;
    
    
    self.buttonLeft.delegate = self;
    
    
    [self addChild:self.buttonLeft];
    
    
    
    

    ##SKAMiniMap SKAMiniMap创建你通过的任何 node的迷你映射。 你传入的node 必须是具有视图的场景的一部分

    SKAMiniMap Example

    ##SKACroppedMiniMap SKACroppedMiniMap类似于 SKAMiniMap,但不能同时看到整个映射,你可以选择视口大小。

    ###SKACroppedMiniMap AutoFollowFeature SKACroppedMiniMap具有自动跟随功能。 将autoFollowNode设置为一个 node,它是用于创建SKACroppedMiniMap的映射的子元素。

    SKACroppedMiniMap Example

    ##SKALabelNode SKALabelNode实现spritekit的SKLabelNode,支持 多行 字符串和阴影,同时继承 SKSpriteNode。 希望看到 SKLabelNode 功能以及 SKSpriteNode 属性和方法。
    关于SKALabelNode的几个要点:

    • NSShadow 类与 shadow 属性一起使用。
    • 如果需要更改行之间的距离,请在使用 多行 字符串时指定 lineSpacing 属性。
    • 若要更改文本对齐方式,请指定 textAlignmentMode 属性,该属性采用类 NSTextAlignment。 Sprite kit是 verticalAlignmentModehorizontalAlignmentMode 属性只更改定位点,而不更改文本对齐方式。

    **Important:** 必须在要显示或者更新标签时调用标签方法的`drawLabel`。

    例子

    
    SKALabelNode *multiLineLabelNode = [SKALabelNode labelNodeWithText:@"HellonI was drawn by SpriteKit!"];
    
    
    multiLineLabelNode.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
    
    
    [multiLineLabelNode drawLabel];
    
    
    [self addChild:multiLineLabelNode];
    
    
    
    

    如果你想与SKA联系,请向我们发送电子邮件,在 join@spritekitalliance.com。

    ###License 版权( c ) 2015 Sprite套件联盟

    若要在取得该软件副本时免费授予任何人,如有下列条件的软件,请免费授予该软件的副本,并与相关的文档文件("软件") 进行许可,包括不受限制的权利,包括以下条件:

    上述版权声明和本许可声明须包括在所有的副本或实质性部分的软件。

    软件是"是",没有任何保证,表示或者隐含,包括但不限于销售,适合特定用途和 NONINFRINGEMENT。 作者或者版权持有人在合同。侵权或者它的他与软件或者它的他用户交易的行为。


    tool  USE  MAKE  Apple  Sprite  Sprite Kit