게임 엔진에서는 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 |