본문 바로가기

Development/IOS & Mac

Particle 효과 (CAEmitterLayer, CAEmitterCell)

게임 엔진에서는 Particle 효과가 다양하지만 iOS 네이티브에서 Particle 효과를 쓰기 위해 게임엔진을 가져오는 것은 조금은 부담이 된다. 그래서 인지 iOS에서 전용 Particle 효과 클래스를 제공해준다.


주요코드


NSString *EMITTER_CELL_ID = @"cell";

NSString *EMITTER_CELL_PATH = @"emitterCells.cell.birthRate";


m_emitterLayer = [CAEmitterLayer layer];

    [m_emitterLayer setBounds:self.bounds];

    [m_emitterLayer setPosition:CGPointMake(self.bounds.size.width/2, self.bounds.size.height/2)];

    [m_emitterLayer setBackgroundColor:[[UIColor clearColor] CGColor]];

    [m_emitterLayer setEmitterPosition:CGPointZero];

    [m_emitterLayer setEmitterSize:CGSizeMake(50, 50)];

    [self.layer addSublayer:m_emitterLayer];


   CAEmitterCell *cell = [CAEmitterCell emitterCell];

    [cell setName:EMITTER_CELL_ID];

    [cell setContents:(id)[m_particleImage CGImage]];

    [cell setBirthRate:0];

    

    [cell setLifetime:1.2f];

    [cell setLifetimeRange:0.3f];

    

    [cell setVelocity:300];

    

    [cell setAlphaSpeed:-0.2f];

    [cell setAlphaRange:-0.5f];

    

    [cell setEmissionRange:2 * M_PI];

    

    [cell setSpin:0.0f];

    [cell setSpinRange:4 * M_PI];

    

    [cell setScale:0.7f];

    [cell setScaleRange:0.5f];

    

    [m_emitterLayer setEmitterCells:[NSArray arrayWithObjects:cell, nil]];




파티클 실행 (터치좌표에 따른 이동)


 [CATransaction begin];

        m_emitterLayer.emitterPosition = point;

        [CATransaction commit];

        

        [m_emitterLayer setValue:[NSNumber numberWithLong:PARTICLE_BIRTHRATE] forKeyPath:EMITTER_CELL_PATH];



파티클 정지

[m_emitterLayer setValue:[NSNumber numberWithLong:0] forKeyPath:EMITTER_CELL_PATH];


'Development > IOS & Mac' 카테고리의 다른 글

UIPasteBoard 사용방법  (0) 2015.05.07
LLDB Quick Start Guide  (0) 2015.05.06
iOS Touch ID Login  (0) 2015.04.10
Xcode에서 ineligible device로 될떄....  (0) 2015.04.09
ARC란....  (0) 2015.03.03