반응형

 

 

 


스파크 튀기는 이펙트 추가

새 마테리얼을 생성하고 위와 같이 노드를 작성합니다.

 

 

다시 Cascade에디터를 키고 빈 공간에 우측 마우스 -> 새 이미터를 추가합니다.

 

Required옵션에서 Material을 이전에 만든 마테리얼로 설정합니다, Screen Alignment는 PSA Velocity로 설정합니다, 이 설정을 통해 파티클의 가속도 방향에 맞춰 크기를 조절할 수 있게 됩니다.

마지막으로 Emitter Loops는 1로 설정합니다, 파티클의 생성 횟수를 설정하는 옵션이며 0이면 무한입니다.

 

 

다음 Spawn옵션에서 Rate값을 0으로 만들고 아래 Burst List를 + 눌러서 1개 추가한 후 Count에 20값을 넣습니다,

이는 파티클시스템 동작 시간 동안 파티클을 지속적으로 생성하는게 아닌 한번에 출력하기 위함입니다.

위 옵션대로 조정하면 한번에 파티클이 20개가 생성됩니다.

 

 

다음 파티클당 라이프타임을 위와 같이 설정합니다.

 

 

Initial Size의 설정은 위와 같이 합니다,

 

 

Size By Speed 옵션을 추가한 이후 위와 같이 설정합니다, 이 옵션은 파티클의 속도 비례해서 크기를 조절할 수 있습니다.

 

Initial Velocity옵션을 위와 같이 설정합니다, 파티클 생성시 최초 속도를 조절합니다.

 

 

Const Acceleration 옵션을 추가하고 위와 같이 설정합니다, 고정으로 설정된 가속도입니다, 중력처럼 사용합니다,

 

 

여기까지 파티클을 조작하면 위와 같이 됩니다, 이제 이 이미터를 이전에 만든 번개 이펙트와 같이 터지게 만들겠습니다.

 

 

 

1번 이미터에 Event->Event Generator를 추가합니다.

이 기능은 해당 이미터의 이벤트를 인식해서 다른 이미터를 생성시킬때 사용합니다.(예 : 폭죽의 로켓->폭발)

 

옵션에서 Type을 Spawn으로 설정합니다,  해당 이미터가 Spawn하거나 Die등 이벤트 타입을 의미합니다,

아래 Custom Name은 이벤트 이름을 설정합니다.

 

 

새로 만들었던 3번 이미터에서 EventReceiver Spawn을 추가합니다, 이전에 Generator는 소환자라면 이 옵션은 소환되는 이미터에 생성합니다.

 

Spawn Count는 생성될때 이미터 생성 갯수를 설정합니다,

하단에는 Generator Type과 Name을 1번 이미터의 Generator에 맞춰서 설정합니다.

 

1번 이미터가 Spawn될때 마다 3번 이미터가 생성되는 것을 확인 할 수 있습니다.

마지막으로 색상 조정을 하고 월드에 띄워 보겠습니다.

 

 

스파크 이펙트가 완성되었습니다.

 

다음은 이전에 만든 UCpt_Cloaking 컴포넌트에 파티클을 생성하는 코드를 추가해보겠습니다.

 

 


스크립팅

 

UCpt_Cloaking.h

	UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class CLOAKINGTUTORIAL_API UCpt_Cloaking : public UActorComponent
{
	GENERATED_BODY()

public:
	...
    ...
    
    //! EditAnywhere로 에디터에서 수정가능하게 만들어줍니다.
	UPROPERTY(EditAnywhere, Category = Particle, meta = (AllowPrivateAccess = "true"))
		class UParticleSystem* m_pParticle;
        
    ...

 

UCpt_Cloaking.cpp

//! 클로킹 발동
void UCpt_Cloaking::Active_Cloaking()
{
	if (m_bInit == false) return;
	if (m_bIsCloaking == true) return;
	if (m_nState_Cloaking != 0) return;

	if (m_pParticle != nullptr)
	{
		UGameplayStatics::SpawnEmitterAttached(m_pParticle, m_pSkeletal_Mesh, TEXT("None"), FVector::UpVector*100.0f, FRotator::ZeroRotator, EAttachLocation::KeepRelativeOffset, true);
	}


	m_bIsCloaking = !m_bIsCloaking;
	m_nState_Cloaking = 1;
	m_fDestAmount = m_fCloakingAmount_Max;
}

//! 클로킹 해제
void UCpt_Cloaking::DeActive_Cloaking()
{
	if (m_bInit == false) return;
	if (m_bIsCloaking == false) return;
	if (m_nState_Cloaking != 0) return;

	if (m_pParticle != nullptr)
	{
		UGameplayStatics::SpawnEmitterAttached(m_pParticle, m_pSkeletal_Mesh, TEXT("None"), FVector::UpVector*100.0f, FRotator::ZeroRotator, EAttachLocation::KeepRelativeOffset, true);
	}
	
	m_bIsCloaking = !m_bIsCloaking;
	m_nState_Cloaking = 2;
	m_fDestAmount = m_fCloakingAmount_Min;
}

 

위와 같이 코드를 작성하고

 

블루프린트에서 Cloaking 컴포넌트의 디테일에 파티클을 넣어주세요.

 

 

은신 이펙트와 함께 발동한 결과물입니다, 색감 조정, 타이밍 수정, Post process로 효과로 디테일을 살리면 더 이뻐질 것입니다.

 

 

 


Post Process(후 처리)

기본 샘플 프로젝트이면 월드에  PostProcessVolume 오브젝트가 존재합니다, 만약 없으면 모드패널에서 생성하면 됩니다,

 

여러가지 후처리 옵션이 있지만 포스팅의 간략화를 위해 이번 이펙트와 시너지가 좋은 효과인 Lens Flares효과만 다뤄보겠습니다.

 

제 눈에 이쁘게 만드는 것이 목표라 자세한 설명하기는 힘들지만 BokehShape옵션에 Bokeh 텍스처를 설정하고(저는 기본 엔진 기본 텍스처를 사용했습니다.) Intensity로 강도 조절했습니다.

 

 

간단하게 렌즈플레어 효과를 만들고 이전에 만든 마테리얼의 세부 수치 조절과 이펙트 타이밍, 색감 등 디테일한 조절을 통해 최종 완성을 합니다.

 


최종 완성본

 

반응형

WRITTEN BY
CatDarkGame
Technical Artist dhwlgn12@gmail.com

,