一、添加背景音乐
- 创建空的游戏物体,名为BackgroundMusic
- 为音频播放器添加音频源(Audio Source)组件
-
将背景音乐音频赋值到AudioClip(红色)
-
设置循环播放(蓝色)
二、添加草莓拾取音效
- 为角色添加音频源组件
- 取消勾选Play On Awake选项(即取消游戏开始时自动播放)
- 编辑角色脚本
(1)创建音频源对象
cs
public class Ruby : MonoBehaviour
{
// 创建音频源对象
public AudioSource audioSource;
}
(2)编写playSound方法播放音效
cs
public class Ruby : MonoBehaviour
{
// 创建音频源对象
public AudioSource audioSource;
// 播放音效
public void playSound(AudioClip audioClip)
{
audioSource.PlayOneShot(audioClip);
}
}
PlayOneShot()方法为只播放一次音效
- 编辑草莓脚本
(1)创建拾取音效
cs
public class Strawberry : MonoBehaviour
{
// 创建拾取音效
public AudioClip pickUpSound;
}
(2)在角色与草莓碰撞的方法中添加播放拾取音效
cs
public class Strawberry : MonoBehaviour
{
// 创建拾取音效
public AudioClip pickUpSound;
// 当角色与草莓发生碰撞时
private void OnTriggerEnter2D(Collider2D collision)
{
Ruby ruby = collision.GetComponent<Ruby>();
if(ruby != null) {
if(ruby.healthPoint < ruby.maxHealthPoint) {
// 播放拾取音效
ruby.playSound(pickUpSound);
}
}
}
}
- 将拾取音效赋值到pickUpSound
三、添加角色受伤音效
- 编辑角色脚本
(1)创建Ruby受伤音效
cs
public class Ruby : MonoBehaviour
{
// 创建ruby受伤音效
public AudioClip rubyHitSound;
}
(2)编写changeHealthPoint()方法,当生命改变量小于0(即受到伤害)时,播放角色受伤音效
cs
public class Ruby : MonoBehaviour
{
// 创建ruby受伤音效
public AudioClip rubyHitSound;
// Ruby改变生命值
public void changeHealthPoint(int value)
{
if(value < 0) {
playSound(rubyHitSound);
}
}
}
- 将角色受伤音效赋值到rubyHitSound
四、添加角色射击音效
- 编辑角色脚本
(1)创建Ruby射击音效
cs
public class Ruby : MonoBehaviour
{
// 创建ruby射击音效
public AudioClip rubyShootSound;
}
(2)编写shoot方法,播放ruby射击音效
cs
public class Ruby : MonoBehaviour
{
// 创建ruby射击音效
public AudioClip rubyShootSound;
// Ruby发射子弹
private void shoot()
{
playSound(rubyShootSound);
}
}
- 将角色射击音效赋值到rubyShootSound
五、添加角色走路音效
- 编辑角色脚本
(1)创建行走音频源对象和ruby移动音效
cs
public class Ruby : MonoBehaviour
{
// 创建行走音频源对象
public AudioSource walkAudioSource;
// 创建ruby移动音效
public AudioClip rubyWalkSound;
}
(2)用walkAudioSource接收AudioSource组件
cs
public class Ruby : MonoBehaviour
{
// 创建行走音频源对象
public AudioSource walkAudioSource;
// 创建ruby移动音效
public AudioClip rubyWalkSound;
void Start()
{
// 用walkAudioSource接收AudioSource组件
walkAudioSource = GetComponent<AudioSource>();
}
}
(3) 当Ruby移动且不播放移动音效时,播放角色移动音效
cs
public class Ruby : MonoBehaviour
{
// 创建行走音频源对象
public AudioSource walkAudioSource;
// 创建ruby移动音效
public AudioClip rubyWalkSound;
void Start()
{
// 用walkAudioSource接收AudioSource组件
walkAudioSource = GetComponent<AudioSource>();
}
// 当Ruby移动时
if(!Mathf.Approximately(move.x, 0) || !Mathf.Approximately(move.y, 0)) {
if(!walkAudioSource.isPlaying) {
walkAudioSource.clip = rubyWalkSound;
walkAudioSource.Play();
}
}
}
(4)当Ruby停止移动时,停止播放移动音效
cs
public class Ruby : MonoBehaviour
{
// 创建行走音频源对象
public AudioSource walkAudioSource;
// 创建ruby移动音效
public AudioClip rubyWalkSound;
void Start()
{
// 用walkAudioSource接收AudioSource组件
walkAudioSource = GetComponent<AudioSource>();
}
// 当Ruby移动时
if(!Mathf.Approximately(move.x, 0) || !Mathf.Approximately(move.y, 0)) {
if(!walkAudioSource.isPlaying) {
walkAudioSource.clip = rubyWalkSound;
walkAudioSource.Play();
}
} else { // 当Ruby停止移动时
walkAudioSource.Stop();
}
}
- 把两个音频源组件赋值到audioSource、walkAudioSource
- 将角色行走音效赋值到rubyWalkSound中
六、添加机器人走路音效
-
为机器人添加Audio Source组件
-
将机器人走路音效赋值到AudioClip中
-
取消勾选PlayOnAwake属性
七、添加机器人受伤音效
- 创建机器人受伤音效数组
cs
public class Enemy : MonoBehaviour
{
// 创建机器人受伤音效数组
public AudioClip[] enemyHitSounds;
}
- 新建一个随机数,为0~机器人受伤音效数组长度之间的随机值,然后随机播放机器人受伤特效数组中的音效
cs
public class Enemy : MonoBehaviour
{
// 创建机器人受伤音效数组
public AudioClip[] enemyHitSounds;
// 敌人改变生命值
public async void changeHealthPoint(int value)
{
if(value < 0) {
// 新建一个随机数,为0~机器人受伤音效数组长度之间的随机值
int randomNum = Random.Range(0, enemyHitSounds.Length);
// 随机播放机器人受伤特效数组中的音效
audioSource.PlayOneShot(enemyHitSounds[randomNum], 40);
}
}
}
- 将两个机器人受伤音效赋值到enemyHitSounds数组
八、添加机器人修理完成音效
- 创建机器人修理完成音效
cs
public class Enemy : MonoBehaviour
{
// 创建机器人修理完成音效
public AudioClip enemyFixSound;
}
- 播放修复完成特效
cs
public class Enemy : MonoBehaviour
{
// 创建机器人修复完成音效
public AudioClip enemyFixSound;
// 敌人修复完成
public void enemyFixed()
{
// 播放修复完成音效,100为音效音量放大倍数
audioSource.PlayOneShot(enemyFixSound, 25);
}
}
- 延迟播放修复完成特效
(1)新建playFixSound方法,将播放修复完成音效的语句移动到playFixSound方法中
cs
public class Enemy : MonoBehaviour
{
// 创建机器人修复完成音效
public AudioClip enemyFixSound;
// 敌人修复完成
public void enemyFixed()
{
}
// 播放敌人修复完成音效
private void playFixSound()
{
audioSource.PlayOneShot(enemyFixSound, 25);
}
}
(2)使用Invoke方法延迟调用playFixSound方法
cs
public class Enemy : MonoBehaviour
{
// 创建机器人修复完成音效
public AudioClip enemyFixSound;
// 敌人修复完成
public void enemyFixed()
{
Invoke("playFixSound", 0.2f);
}
// 播放敌人修复完成音效
private void playFixSound()
{
audioSource.PlayOneShot(enemyFixSound, 25);
}
}
(3) 新建stopAudioSourcePlay方法,将stop语句移动到其中,在playFixSound方法中使用Invoke方法延迟调用stopAudioSourcePlay方法
cs
public class Enemy : MonoBehaviour
{
// 创建机器人修复完成音效
public AudioClip enemyFixSound;
// 敌人修复完成
public void enemyFixed()
{
Invoke("playFixSound", 0.2f);
}
// 播放敌人修复完成音效
private void playFixSound()
{
audioSource.PlayOneShot(enemyFixSound, 25);
Invoke("stopAudioSourcePlay", 1.0f);
}
// 停用音频源组件
private void stopAudioSourcePlay()
{
audioSource.Stop();
}
}
- 将机器人修复完成音效赋值到enemyFixSound
本章完。感谢阅读!