본문 바로가기

Cocos2d-x v3.17/고급 기능

[Cocos2d-x 고급기능]ParticleSystem

반응형

파티클 시스템 

파티클 시스템은 컴퓨터그래픽에서 특정한 이펙트를 시뮬레이션하는 기술입니다.

이것은 자연현상,물리현상,공간왜곡 을 모방하는데 탁월합니다.

우리를 위하여 자연스럽고 임의성이 있는 이펙트(폭발,불꽃놀이,물흐름)효과를 구현하는데 사용합니다.

당연히 Cocos2d-x엔진에서 당신을 위해 강력한 파티클시스템을 제공합니다. 

아래는 파티클시스템을 사용하여 구현한 두종류의 파티클효과이다:



파티클을 만드는데 사용되는툴 

당신이 하나하나 파티클 이펙트를 만들수 있고 입맛에 따라서 속성을 변경할수 있습니다.아래는 서드파티툴을 소개합니다.


Particle Designer:Mac에서 사용되는 강력한 파티클이펙트 편집기 

V-play particle editor:크로스플랫폼 파티클이펙트 편집기 

Particle2dx:웹 파티클이펙트 편집기.웹페이지에서 바로 사용할수 있다. 


이런 툴을 사용하여 파티클의 이펙트를 설계할수 있고 최종적으로 .plist파일이 출력됩니다.

Cocos2d-x는 이런 파일로 파티클이펙트를 씬안에 추가시킬수 있습니다.

추가하는 방법은 일반적인 노드클래스와 같습니다. 

   

생성방법: 


C++ 

// create by plist file

auto particleSystem = ParticleSystem::create("SpinningPeas.plist"); 


내장되있는 파티클 효과 

파티클 효과를 추가하기 위한 준비가 되었습니까?

직접 파티클효과를 만들어보는건 손에 익었나요?

괜찮습니다.

우린 아래와 같은 파티클효과를 내장시켰고 당신은 바로 사용할수 있습니다. 


ParticleFire: Point particle system. Uses Gravity mode. 

ParticleFireworks: Point particle system. Uses Gravity mode. 

ParticleSun: Point particle system. Uses Gravity mode. 

ParticleGalaxy: Point particle system. Uses Gravity mode. 

ParticleFlower: Point particle system. Uses Gravity mode. 

ParticleMeteor: Point particle system. Uses Gravity mode. 

ParticleSpiral: Point particle system. Uses Gravity mode. 

ParticleExplosion: Point particle system. Uses Gravity mode. 

ParticleSmoke: Point particle system. Uses Gravity mode. 

ParticleSnow: Point particle system. Uses Gravity mode. 

ParticleRain: Point particle system. Uses Gravity mode. 


내장된 불꽃효과를 사용하려면 ParticleFireworks를 사용합니다: 


C++ 

auto emitter = ParticleFireworks::create(); 

addChild(emitter, 10); 

아래와 같은 효과입니다.



내장된 파티클 효과중에 당신이 원하는것이 없어도 괜찮습니다.

당신이 직접 속성을 설정하여 컨트롤 할수있습니다. 

C++ 

auto emitter = ParticleFireworks::create(); 

// set the duration

emitter->setDuration(ParticleSystem::DURATION_INFINITY); 

// radius mode

emitter->setEmitterMode(ParticleSystem::Mode::RADIUS); 

// radius mode: 100 pixels from center

emitter->setStartRadius(100);

emitter->setStartRadiusVar(0);

emitter->setEndRadius(ParticleSystem::START_RADIUS_EQUAL_TO_END_RADIUS);

emitter->setEndRadiusVar(0); // not used when start == end 

addChild(emitter, 10); 

   

출처: <http://cocos2d-x.org/docs/cocos2d-x/zh/other_node_types/particles.html

 


반응형