2014-02-08 3 views
0

SKSpriteNode을 복수 이미지으로 구성하는 가장 좋은 방법은 무엇입니까?SKSpriteNode 다중 텍스처

[SKTexture textureWithImage:image];은 스케일 속성을 사용하지 않는다는 것을 발견했습니다. (사용자 정의 비트 맵 어셈블 된 이미지에 작은 SKSpriteNode이있는 경우 사용합니다).

아마 복수형 SKSpriteNode 사이의 링크를 만들 수 있지만 충돌 감지에 대한 좋은 생각이 아닌 것 같습니다.

편집 : 나를 위해 작동

솔루션.
이 코드는 3 텍스처를 사용하여 UIImage을 생성하는 GraphicsContext에 그립니다.
그런 다음 UIImage을 이제 SKNode에 여러 텍스처가 추가되었습니다. 그러나 내 경우에는 매우 중요이고 SKNode크기 속성은[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]]; 
+0

는 여러 스프라이트, 충돌 – LearnCocos2D

+0

에 대한 accumulatedFrame을 같은 sknode에 넣어 사용할 필요 당신이 정말로 스프라이트 노드를 만들 SKTexture를 사용해야합니까? –

+0

나는 그렇다고 생각한다. 명시 적으로 텍스처를 지정하지 않고 SKSpriteNode를 만들 수있는 경우에도 그 뒤에 하나가 있습니다. –

답변

1

당신은 다음 텍스처와 다른 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]; 
관련 문제