赞
踩
1. 创建空的游戏物体,名为BackgroundMusic
2. 为音频播放器添加音频源(Audio Source)组件
3. 将背景音乐音频赋值到AudioClip(红色)
4. 设置循环播放(蓝色)
1. 为角色添加音频源组件
2. 取消勾选Play On Awake选项(即取消游戏开始时自动播放)
3. 编辑角色脚本
(1)创建音频源对象
- public class Ruby : MonoBehaviour
- {
- // 创建音频源对象
- public AudioSource audioSource;
- }
(2)编写playSound方法播放音效
- public class Ruby : MonoBehaviour
- {
- // 创建音频源对象
- public AudioSource audioSource;
-
- // 播放音效
- public void playSound(AudioClip audioClip)
- {
- audioSource.PlayOneShot(audioClip);
- }
-
- }
PlayOneShot()方法为只播放一次音效
4. 编辑草莓脚本
(1)创建拾取音效
- public class Strawberry : MonoBehaviour
- {
- // 创建拾取音效
- public AudioClip pickUpSound;
- }
(2)在角色与草莓碰撞的方法中添加播放拾取音效
- 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);
- }
- }
- }
-
- }

5. 将拾取音效赋值到pickUpSound
1. 编辑角色脚本
(1)创建Ruby受伤音效
- public class Ruby : MonoBehaviour
- {
- // 创建ruby受伤音效
- public AudioClip rubyHitSound;
- }
(2)编写changeHealthPoint()方法,当生命改变量小于0(即受到伤害)时,播放角色受伤音效
- public class Ruby : MonoBehaviour
- {
- // 创建ruby受伤音效
- public AudioClip rubyHitSound;
-
- // Ruby改变生命值
- public void changeHealthPoint(int value)
- {
- if(value < 0) {
- playSound(rubyHitSound);
- }
- }
- }
2. 将角色受伤音效赋值到rubyHitSound
1. 编辑角色脚本
(1)创建Ruby射击音效
- public class Ruby : MonoBehaviour
- {
- // 创建ruby射击音效
- public AudioClip rubyShootSound;
- }
(2)编写shoot方法,播放ruby射击音效
- public class Ruby : MonoBehaviour
- {
- // 创建ruby射击音效
- public AudioClip rubyShootSound;
-
- // Ruby发射子弹
- private void shoot()
- {
- playSound(rubyShootSound);
- }
- }
2. 将角色射击音效赋值到rubyShootSound
1. 编辑角色脚本
(1)创建行走音频源对象和ruby移动音效
- public class Ruby : MonoBehaviour
- {
- // 创建行走音频源对象
- public AudioSource walkAudioSource;
- // 创建ruby移动音效
- public AudioClip rubyWalkSound;
- }
(2)用walkAudioSource接收AudioSource组件
- public class Ruby : MonoBehaviour
- {
- // 创建行走音频源对象
- public AudioSource walkAudioSource;
- // 创建ruby移动音效
- public AudioClip rubyWalkSound;
-
- void Start()
- {
- // 用walkAudioSource接收AudioSource组件
- walkAudioSource = GetComponent<AudioSource>();
- }
- }
(3) 当Ruby移动且不播放移动音效时,播放角色移动音效
- 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停止移动时,停止播放移动音效
- 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();
- }
- }

2. 把两个音频源组件赋值到audioSource、walkAudioSource
3. 将角色行走音效赋值到rubyWalkSound中
1. 为机器人添加Audio Source组件
2. 将机器人走路音效赋值到AudioClip中
3. 取消勾选PlayOnAwake属性
1. 创建机器人受伤音效数组
- public class Enemy : MonoBehaviour
- {
- // 创建机器人受伤音效数组
- public AudioClip[] enemyHitSounds;
- }
2. 新建一个随机数,为0~机器人受伤音效数组长度之间的随机值,然后随机播放机器人受伤特效数组中的音效
- 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);
- }
- }
- }

3. 将两个机器人受伤音效赋值到enemyHitSounds数组
1. 创建机器人修理完成音效
- public class Enemy : MonoBehaviour
- {
- // 创建机器人修理完成音效
- public AudioClip enemyFixSound;
- }
2. 播放修复完成特效
- public class Enemy : MonoBehaviour
- {
- // 创建机器人修复完成音效
- public AudioClip enemyFixSound;
-
- // 敌人修复完成
- public void enemyFixed()
- {
- // 播放修复完成音效,100为音效音量放大倍数
- audioSource.PlayOneShot(enemyFixSound, 25);
- }
- }
3. 延迟播放修复完成特效
(1)新建playFixSound方法,将播放修复完成音效的语句移动到playFixSound方法中
- public class Enemy : MonoBehaviour
- {
- // 创建机器人修复完成音效
- public AudioClip enemyFixSound;
-
- // 敌人修复完成
- public void enemyFixed()
- {
-
- }
-
- // 播放敌人修复完成音效
- private void playFixSound()
- {
- audioSource.PlayOneShot(enemyFixSound, 25);
- }
- }

(2)使用Invoke方法延迟调用playFixSound方法
- 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方法
- 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();
- }
- }

3. 将机器人修复完成音效赋值到enemyFixSound
本章完。感谢阅读!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。