0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【UE5/C++】取り込んだサウンドをキー入力でオブジェクトから再生する

Posted at

はじめに

UE5 に取り込んだ音源を C++ で再生する。
特定のキーを押したとき再生できるようにする。
座標をオブジェクトと同じ位置にし、指向性を持たせる。

C++ クラスを作る

Unreal Editor で右クリック > New C++ Class > Actor > Create Class

PlaySound.h
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Sound/SoundBase.h"
#include "PlaySound.generated.h"

UCLASS()
class GAME_API APlaySound : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	APlaySound();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

private:
	UPROPERTY(EditAnywhere, Category = "Sound")
	USoundBase* SoundToPlay;
};
PlaySound.cpp
#include "PlaySound.h"
#include "Kismet/GameplayStatics.h"

// Sets default values
APlaySound::APlaySound()
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;
	
}

// Called when the game starts or when spawned
void APlaySound::BeginPlay()
{
	Super::BeginPlay();
}

// Called every frame
void APlaySound::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
	// Play sound if v key is pressed
	if (GetWorld()->GetFirstPlayerController()->WasInputKeyJustPressed(EKeys::V))
	{
		if (SoundToPlay)
		{
			UGameplayStatics::PlaySoundAtLocation(this, SoundToPlay, GetActorLocation());
		}
	}
}

再生する音源を入れる

Unreal Editor 上にドラッグアンドドロップするだけで、UE 内で使えるように変換される。なので複雑な手順は不要。

再生するデータをセットする

PlaySound クラスを Level にドラッグアンドドロップし、Outliner 内にある PlaySound の Details を編集する。
コード内 UPROPERTY(EditAnywhere, Category = "Sound") で設定した変数、この画像の Sound to Play に再生するファイルをセットする。

image.png

実行して再生してみる

if (GetWorld()->GetFirstPlayerController()->WasInputKeyJustPressed(EKeys::V)) このコードで V キーを押したとき、音がセットされていれば再生できるようになっている。
なので、実行後に V キーを押すとセットした音が流れる。(音量注意)

BP クラス化して座標を変える

今作ったクラスを右クリック > Create Blueprint class based on PlaySound を選択し、格納するパスを指定して Create Play Sound Class を押す。
Level に Cube を配置し、先ほど作った BP クラスを Cube 配下に設置、すると Cube の位置から音源が流れる。

※ 音源は BP クラス内でセットしておくこと。

image.png

指向性と距離減衰がない場合

もし、指向性や距離減衰がない場合は、取り込んだ音源ファイル をダブルクリック後 Attenuation Setting を変更する。もし設定が何も存在しない場合は、新規アセットを自分で生成し、割り当ててあげるといい感じになる。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?