favicon Jay Lee DevLog

📚 목차

오늘 휴가쓰고 쉬는날인데 하루종일 이것만 하고 있는 것 같다.

오늘은 공격에 밋밋함을 없애줄 이펙트를 추가해보자.

 

이펙트 추가는 생각보다 쉽다. 물론 직접 만들어서 뭔가를 한다면

오래걸리겠지만, 나는 만들어진걸 활용하고 있기 때문에..

일단 MyCharacter.h에 아래 소스 추가.

public:
	UPROPERTY(VisibleAnywhere, Category = Effect)
	UParticleSystemComponent* PowerUpEffect;

	UPROPERTY(VisibleAnywhere, Category = Effect)
	UParticleSystemComponent* AttackEffect;

	UPROPERTY(VisibleAnywhere, Category = Effect)
	UParticleSystemComponent* DamageEffect;

이름을 보면 대강 알겠지만,

	UPROPERTY(VisibleAnywhere, Category = Effect)
	UParticleSystemComponent* PowerUpEffect;

말 그래도 파워업을 할때 나올 이펙트다. 

나는 마우스 우클릭시 데미지 증가 버프를 주게끔 나중에 추가해 주려하고 있다.

 

이후 MyCharacter.cpp에

PowerUpEffect = CreateDefaultSubobject<UParticleSystemComponent>(TEXT("PowerUpEffect"));
PowerUpEffect->SetupAttachment(RootComponent);
PowerUpEffect->bAutoActivate = false;

AttackEffect = CreateDefaultSubobject<UParticleSystemComponent>(TEXT("AttackEffect"));
AttackEffect->SetupAttachment(RootComponent);
AttackEffect->bAutoActivate = false;

DamageEffect = CreateDefaultSubobject<UParticleSystemComponent>(TEXT("DamageEffect"));
DamageEffect->SetupAttachment(RootComponent);
DamageEffect->bAutoActivate = false;

생성자에 위와 같이 이펙트를 만들어주고,

해당 소스까지 완료하고 실행하면 캐릭터 블루프린트에 Effect가 아래와 같이 추가되어 있을거다.

이를 클릭하면 오른쪽 디테일에서 이펙트를 선택할 수 있다.

이렇게 하고 난 후 다시 소스로 돌아와서,

MyCharacter.cpp에 원하는 동작에 이펙트를 활성화 시켜주면 끝이다.

void AMyCharacter::Attack()
{
	//if (IsAttacking) return;
	if (MyAnim)
	{
		AttackEffect->Activate();
		MyAnim->PlayAttackMontage();
		IsAttacking = true;
	}
}

void AMyCharacter::AttackHitNotifyR()
{
	if (PowerUpEffect->IsActive())
		PowerUpEffect->Deactivate();
	else
		PowerUpEffect->Activate();
}

float AMyCharacter::TakeDamage(float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser)
{
...
	DamageEffect->Activate();
	MyAnim->SetDead();
}

나는 각각의 역할에 맞게,

Attack안에서는 AttackEffect를 실행,

마우스 우클릭 안에서 PowerUpEffect 실행, 한번 더 누르면 꺼지게끔 해뒀다.

그리고 데미지를 받는 곳에서 DamageEffect를 활성화 해줬다.

 

이제 플레이 해보면..

이펙트가 들어간 걸 볼 수 있다.

이걸 확인하는 과정에서 문제가 생겼는데,

피격판정이 한번밖에 안되는 것 같다. 이건 왜 이러는거지 또..

오늘은 너무 오래해서 피곤하니,

좀 쉬고 다음 글에서 확인 해봐야겠다..

+ Recent posts

/ /

Contact

📧 dlwjdwls60@naver.com


블로그에 내용이 있으면 해당 글을 보여주며, 없으면 내용이 복사된 채로 ChatGPT로 연결됩니다.