1

SKSpriteNode 複数の画像で構成する最良の方法は何ですか?

[SKTexture textureWithImage:image];スケール プロパティを使用していないことがわかりました(カスタム ビットマップ アセンブル イメージで使用すると、小さな がありSKSpriteNodeます)。

倍数間のリンクを作成できるかもしれませんがSKSpriteNode、衝突検出に適しているかどうかはわかりません。

編集:

私のために働く解決策。
このコードは 3 つのテクスチャを取り、GraphicsContextを作成するでそれらを描画しますUIImage。次に、これを複数のテクスチャを持つmy
に追加します。ただし、私の場合、サイズ プロパティを指定することは非常に重要です。そうしないと、ノードは不適切なスケール係数を使用し、テクスチャが小さくなります (非網膜)。UIImageSKNodeSKNode [self setSize:CGSizeMake(WIDTH_HERO, HEIGHT_HERO)];

CGSize mergedSize = CGSizeMake(WIDTH_HERO, HEIGHT_HERO);
UIGraphicsBeginImageContextWithOptions(mergedSize, NO, 0.0f);

[textureImage1 drawInRect:CGRectMake(0, 0, WIDTH_HERO, textureImage1.size.height)];
[textureImage2 drawInRect:CGRectMake(0, 40, WIDTH_HERO, textureImage2.size.height)];
[textureImage3 drawInRect:CGRectMake(0, 0, WIDTH_HERO, textureImage3.size.height)];

UIImage *mergedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

[self setTexture:[SKTexture textureWithImage:mergedImage]];
4

1 に答える 1

2

SKSpriteNode次のテクスチャを使用して別のノードを作成addChild:し、元のノードを呼び出してから、親ノードに対する新しいノードの位置を変更できます。

これは私のサブクラスの中にありSKSpriteNodeます;

    UIImage* bottom = [[UIImage imageNamed: @"obstacle_base"] resizableImageWithCapInsets: UIEdgeInsetsMake(0, 0, 0, 0)];
    UIImage* top = [UIImage imageNamed: @"obstacle_top"];

    SKTexture* bottomT = [SKTexture textureWithImage: bottom];
    SKTexture* topT = [SKTexture textureWithImage: top];

    [self setTexture: bottomT];

    // create top
    SKSpriteNode* topNode = [[SKSpriteNode alloc] initWithTexture: topT];
    topNode.position = CGPointMake(0, height/2 - topNode.size.height/2);
    [self addChild: topNode];
于 2014-02-13T20:17:16.117 に答える