본문 바로가기
언리얼엔진 개발/Sound Effect

[UnrealEngine5] 원하는 시점에 효과음 넣기

by yeni_0224 2023. 5. 21.
728x90
반응형

적이  플레이어나 플레이어가 지켜야하는 타워를 공격할 때

예를 들면 망치로 공격을 한다고 해보자. 플레이어는 멀리 있고, 적과 타워가 가까이에 있어서

적이 타워를 공격했을 때, 플레이어는 적이 공격하는 행위가 보이지, 그 소리는 멀리서 들리는 것이 훨씬 좋다.

3차원 공간적인 느낌을 더욱 살릴 수 있기 때문이다.

 

적이 무기를 가지고 공격한다고 했을 때

소리는 적에게서 나는 것으로 할  것이다.

	UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "Effect Sound")
	class USoundBase* axeHitSound;

사운드를 사용하고자 할 때는 USoundBase를 사용한다.

	/*Effect Sound*/
	axeHitSound = CreateDefaultSubobject<USoundBase>(TEXT("axeHitSound Sound"));
	ConstructorHelpers::FObjectFinder<USoundBase> axeSound(TEXT("/Script/Engine.SoundWave'/Game/Sound/Wood2.Wood2'"));
	if (axeSound.Succeeded())
	{
		axeHitSound = (axeSound.Object);
	}

경로까지 지정해두어 혹시나 블루프린트가 깨지는 이슈가 있을 때, 블루프린트를 다시 생성해도 이 효과음이 잘 할당되어있을 수 있도록 경로도 설정해주어 넣어주었다.

게임 배경음악을 넣을 때는 레벨 블루프린트에서 넣어주면 되는데 이 부분은 나중에 다시 설명하도록 하겠다.

 

적이 공격하는 타이밍에 이 효과음을 재생시켜주라고 할 것이다.

	axe->Attack();
	UGameplayStatics::PlaySoundAtLocation(this, axeHitSound, GetActorLocation(), 0.7f, 1, 0, soundDistance);

공격하는 StateMachine에서 Attack 하는 함수가 호출되었을 때 이 효과음이 들리도록 할 것이다.

소리가 지정되는 위치를 매개변수 안에 넣어주었다.

여기서 soundDistance 함수는 Sound Attenuation을 사용하기 위해 만들어준 변수이다.

	UPROPERTY(EditDefaultsOnly, Category = "Effect Sound")
	class USoundAttenuation* soundDistance;

SoundAttenuation은 소리가 조금 더 입체적으로 들릴 수 있도록, 가까운 곳에서는 큰 소리로 들리게 하고, 멀리 있을 때는 작은 소리로 들릴 수 있도록 설정해주는 것인데, 자세한 내용은 조금 더 검색해보는것이 좋겠다.

 

이 변수는 적 클래스의 헤더에 선언해주었다.

적이 여러 종류이기 때문에 Enemy들의 부모 클래스를 만들어주고, 각 종류의 Enemy Class들이 만들어져있을 경우 부모 Enemy Class에 변수를 만들어두면 자연스럽게 자식 Class에서도 잘 사용할 수 있다.

https://docs.unrealengine.com/4.27/en-US/WorkingWithAudio/DistanceModelAttenuation/

 

Sound Attenuation

Reference for the various models available for controlling the attenuation of sounds.

docs.unrealengine.com

https://www.youtube.com/watch?v=HbsES3VNNQY 

 

728x90
반응형