節電鯖民の遊び場

10-もっと音を増やしたい

最終更新:

mcforum

- view
メンバー限定 登録/ログイン

目次


できたもの



前提


素材集め


ゲームの開始時に茜ちゃんに喋ってもらう

  • GameController についていた AudioSource を共用することにする
    • AudioSource のボリュームは 1 に戻しておく
  • Click スクリプトに public メンバで ClickSound と StartSound を用意してそれぞれの音声を設定する。

スクリプトで制御する

  • Start関数で起動時にStartSoundを再生する。
  • 既存の Click はAudioSourceにつけていた音声ではなく、public 変数のものを使用する。
    • 必要に応じて、PlayOneShot の際にパラメタを増やし volumeScale を指定してボリュームを下げて再生する。
+ 詳細を開く
  1. using UnityEngine;
  2.  
  3. public class Click : MonoBehaviour
  4. {
  5. public AudioClip clickSound;
  6. public AudioClip startSound;
  7. GameController gameCtrl;
  8. AudioSource clickAudio;
  9.  
  10. void Start() {
  11. gameCtrl = GameObject.FindObjectOfType<GameController>();
  12. clickAudio = gameObject.GetComponent<AudioSource>();
  13. clickAudio.PlayOneShot(startSound);
  14. }
  15. void Update() {
  16. if (!gameCtrl.clickable) {
  17. return;
  18. }
  19. if (Input.GetMouseButtonDown(0)) {
  20. // クリック数をインクリメントし、ゲームコントローラー経由で全体に通知する
  21. gameCtrl.IncrementCount();
  22. clickAudio.PlayOneShot(clickSound, 0.5f);
  23. }
  24. }
  25. }
  26.  


レベルアップ時に茜ちゃんに喋ってもらう

  • AkaneController に SoundSource 及び、喋らせる音声クリップを登録する。

スクリプトで制御する

  • エンディングのとき以外のレベルアップ時に PlayOneShot(akaneAudio.clip) でレベルアップ音声を再生する。
+ 詳細を開く
  1. using UnityEngine;
  2.  
  3. public class AkaneController : MonoBehaviour, ICounterReceiver
  4. {
  5. public GameObject akane;
  6. Animator anime;
  7. AudioSource akaneAudio;
  8. int prevLevel;
  9.  
  10. void Start()
  11. {
  12. anime = akane.GetComponent<Animator>();
  13. akaneAudio = gameObject.GetComponent<AudioSource>();
  14. prevLevel = 0;
  15. }
  16. public void UpdateCounter(int count) {
  17. // 数値変動に応じてアニメーションする
  18. anime.SetTrigger("click_cancel");
  19. anime.SetTrigger("click");
  20.  
  21. int currentLevel = count / 100;
  22. if (prevLevel < currentLevel) {
  23. // LevelUp
  24. anime.SetTrigger("levelup");
  25. prevLevel = currentLevel;
  26. // レベルアップ音声を流します。ただしエンディングの際には重複するのでスキップします。
  27. if (count != 1000) {
  28. akaneAudio.PlayOneShot(akaneAudio.clip);
  29. }
  30.  
  31. } else if (prevLevel < currentLevel) {
  32. // LevelDown
  33. anime.SetTrigger("leveldown");
  34. prevLevel = currentLevel;
  35. }
  36. }
  37. }
  38.  


エンディングを迎えらた茜ちゃんに喋ってもらう

  • EndingController に SoundSource 及び、喋らせる音声クリップを登録する。

スクリプトで制御する

  • エンディングのとき以外のレベルアップ時に PlayOneShot(akaneAudio.clip) でレベルアップ音声を再生する。
+ 詳細を開く
  1. using System;
  2. using System.Collections;
  3. using UnityEngine;
  4.  
  5. public class EndingController : MonoBehaviour, ICounterReceiver
  6. {
  7. public GameObject canvasObject;
  8. Canvas canvas;
  9. Animator anime;
  10. AudioSource endAudio;
  11.  
  12. void Start()
  13. {
  14. ~省略~
  15. endAudio = gameObject.GetComponent<AudioSource>();
  16. }
  17. public void UpdateCounter(int count) {
  18. // 数値変動に応じてアニメーションする
  19. if (count == 1000) {
  20. canvasObject.SetActive(true);
  21. anime.SetTrigger("gameEnd");
  22. endAudio.PlayOneShot(endAudio.clip); // エンディングのアニメーション開始と同時に再生
  23. // 10 秒後に close Ending を再生しエンディング画面を消す
  24. ~省略~
  25. }
  26.  


カウンタが 5, 15, 25, 35 と1の桁が 5 の場合に、葵ちゃんにランダムな内容を喋ってもらう

  • AoiController に AoiVoiceList と AudioSource を持たせ、ランダムで喋らせたい音声クリップを全て登録する。

スクリプトで制御する

  • カウンタ更新時に (カウンタ + 5) % 10 == 0 の場合にリストからランダムな音声を再生する。
+ 詳細を開く
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5.  
  6. public class AoiController : MonoBehaviour, ICounterReceiver
  7. {
  8. ~省略~
  9. GameController gameCntl;
  10. AudioSource aoiAudio;
  11. private void Start() {
  12. gameCntl = GameController.FindObjectOfType<GameController>();
  13. aoiAudio = gameObject.GetComponent<AudioSource>();
  14. }
  15.  
  16. public void UpdateCounter(int count) {
  17. // 数値変動に応じて葵ちゃんの数を増減させる
  18. AdjustAoiChan(count);
  19.  
  20. if ((count + 5) % 10 == 0) {
  21. int index = UnityEngine.Random.Range(0, aoiVoiceList.Count);
  22. // 葵ちゃんの登録音声をランダムに発声させる。
  23. aoiAudio.PlayOneShot(aoiVoiceList[index]);
  24. }
  25. }
  26. ~省略~
  27.  
  28. }
  29.  

目安箱バナー