2014-06-21 3 views
1

당신은 동굴에있을 때 나는 종류의 포켓몬처럼, 셰이더를 생성하기 위해 SKEmitterNode를 사용하려고 해요 : 여기"전쟁의 안개"효과를 얻기 위해 스프라이트 키트에서 SKEmitterNode를 사용하는 방법은 무엇입니까?

NSString *burstPath = 
    [[NSBundle mainBundle] pathForResource:@"MyParticle" ofType:@"sks"]; 

    SKNode *area = [[SKNode alloc] init]; 

    SKSpriteNode *background = [SKSpriteNode spriteNodeWithColor:[SKColor blackColor] size:CGSizeMake(self.frame.size.width, self.frame.size.width)]; 
    background.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)); 

    SKEmitterNode *burstNode = 
    [NSKeyedUnarchiver unarchiveObjectWithFile:burstPath]; 
    burstNode.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame)); 

    burstNode.particleBlendMode = SKBlendModeSubtract; 
    [area addChild:background]; 
    [area addChild:burstNode]; 
    [self addChild:area]; 

: 여기 http://www.serebii.net/pokearth/maps/johto-hgss/38-route31.png

내가 지금까지 가지고있는 코드입니다 SKEmitterNode : http://postimg.org/image/60zflqjzt/

두 가지 아이디어가 있습니다. 첫 번째는 직사각형 SKSpriteNode를 만들고 직사각형 SKSpriteNode에서 SKEmitterNode를 제거하는 것이 었습니다. 그런 식으로, 우리는 중앙에 "구멍"이있는 검은 색 사각형을 볼 수 있습니다.

두 번째는 직사각형 SKSpriteNode와 SKEmitter 노드를 다른 SKNode (영역)에 추가 한 다음 SKEmitterNode의 particleBlendMode를 설정하고 마지막으로 색상의 함수로 SKNode (영역)의 알파를 설정하는 것이 었습니다. 예를 들어 픽셀의 색상이 검은 색이면 해당 픽셀의 알파 값은 1.0이고 다른 픽셀은 흰색이며 다른 픽셀의 알파 값은 0.0입니다.

이 질문은 어떤면에서 How to create an alpha mask in iOS using sprite kit의 중복 일 수도 있지만 좋은 대답이 제시되지 않았으므로 문제가되지 않는다고 가정합니다.

대단히 감사합니다.

답변

2

이들은 찾고있는 노드가 아닙니다! ;)

입자가 전쟁의 안개를 만드는 데 사용할 수는 없지만 입자가 전쟁의 안개를 발생 시키도록 만들 수 있다고하더라도 매우 제한적입니다.

연결된 스크린 샷을 기반으로하면 실제로 투명한 영역 인 "구멍"이있는 이미지 만 필요합니다. 이미지는 화면 크기 여야하며 필요한 정도까지 국경을 막아야합니다. 이것은 드러내지 않는 전쟁의 안개 또는 오히려 플레이어를 둘러싼 암흑의 효과 일 것입니다.

세계의 영역을 발견하는 진정한 안개 구현은 일반적으로 가장 단순한 형태로 사각형의 검은 색 스프라이트를 제거 (페이드 아웃)하는 패턴을 사용합니다.

+0

이미지에 화염 깜박임 효과를 추가 할 수있는 방법이 있습니까? 그리고 당신의 대답에 대한 단점은 내가 다른 반지름을 원할 때마다 여분의 이미지를 만들어야한다는 것입니다 :/그렇지 않으면 좋은 생각입니다 :) –

+0

안개가 자욱한 스프라이트를 스케일링하여 다른 반지름을 얻을 수 있습니다. – LearnCocos2D

+0

토치/불꽃 깜박임에 대한 아이디어가 있습니까? –