基于C++代码的UE4学习(四十六)——为坦克开火添加声音系统

本文详述了在UE4中实现游戏音效的两种关键方法:直接播放Wave文件和使用SoundCue。通过具体代码示例,展示了如何加载声音资源、播放声音文件以及在特定位置触发音效,为游戏开发人员提供了实践指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

声音播放涉及两种方式,一种是直接播放Wave,一种是通过cue进行播放。

先讲解第一种,直接播放音频文件(必须为Wave)。

USoundWave* fireSound; 添加在头文件中。

 

在源文件中加载声音资源。

1     auto fireSoundAsset = ConstructorHelpers::FObjectFinder<USoundWave>(TEXT("SoundWave'/Game/BP/fireSound.fireSound'"));
2     if (fireSoundAsset.Succeeded()) {
3         fireSound = fireSoundAsset.Object;
4     }

 

播放声音文件需要通过UGameplayStatics::PlaySound()或者UGameplayStatics::PlaySoundAtLocation()方法实现。

开火时候实现声音的播放,需要填入的参数分别是,在哪里播放,声音文件是什么和播放声音文件的具体位置。

 

 1 void ATank::attack()
 2 {
 3 
 4     FTransform shootSpotLocation = shootSpot->GetComponentTransform();
 5 
 6     AMissle* missle = GetWorld()->SpawnActor<AMissle>(AMissle::StaticClass(), shootSpotLocation);
 7 
 8     missle->moves->SetVelocityInLocalSpace(shootSpotLocation.GetLocation().ForwardVector * 80000);
 9     missle->moves->Activate(true);
10     fire->Activate(true);
11     UGameplayStatics::PlaySoundAtLocation(GetWorld(),fireSound, shootSpot->GetRelativeLocation());
12 
13 
14 }

 

 

第二种播放声音的方法,通过cue。

新建一个SoundCue文件。

 

选择WavePlayer,并为之选择一个Wave音频文件。

 

声明一个USoundCue的对象指针,并与之前一样,加载资源。

 

播放SoundCue文件需要通过 UGameplayStatics::SpawnSoundAttached方法实现。播放SoundCube时,需要指定一个Attach对象,要么是一个Pawn,要么是一个Location;

 

 

 1 void ATank::attack()
 2 {
 3 
 4     FTransform shootSpotLocation = shootSpot->GetComponentTransform();
 5 
 6     AMissle* missle = GetWorld()->SpawnActor<AMissle>(AMissle::StaticClass(), shootSpotLocation);
 7 
 8     missle->moves->SetVelocityInLocalSpace(shootSpotLocation.GetLocation().ForwardVector * 80000);
 9     missle->moves->Activate(true);
10     fire->Activate(true);
11     UGameplayStatics::PlaySoundAtLocation(GetWorld(),fireSound, shootSpot->GetRelativeLocation());
12 
13     UAudioComponent *ac = UGameplayStatics::SpawnSoundAttached(soundcue, shootSpot); 
14     ac->Activate(true);
15 }

 

 

结合上一节的粒子系统与本节的声音系统,效果如下:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值