質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

910閲覧

unityで2種類のmp3を同時に鳴らしたい

kabatiro

総合スコア20

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/09/26 13:31

unityで実際のピアノのように任意の音を組み合わせて和音を鳴らしたいです.
以下のコードで,

・エンターキーとスペースキーにそれぞれ音を割り当ててスペースキーとエンターキーを同時に押すことで和音を作る.
**
・AudioSourceを2つ割り当てて順番にPlayOneShotで鳴らす.**

ということを試したのですが,2音の間にかなり間が空いてしまっています,完全に同時に鳴らすことはできなくても,他になにかほぼ同時に音を鳴らす方法は考えられるでしょうか.よろしくお願いします.

mp3ファイルは10kB程度です.

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class GameDirector : MonoBehaviour 6{ 7 public AudioClip C4; 8 public AudioClip E4; 9 //public AudioSource aud; 10 //public AudioSource aud2; 11 12 public AudioSource[] aud; 13 14 // Start is called before the first frame update 15 void Start() 16 { 17 this.aud = GetComponents<AudioSource>(); 18 } 19 20 // Update is called once per frame 21 void Update() 22 { 23 if(Input.GetKey(KeyCode.Space)) 24 { 25 aud[0].Play(); 26 } 27 if (Input.GetKey(KeyCode.Return)) 28 { 29 aud[1].Play(); 30 } 31 } 32 33 public void StartButtonDown() 34 { 35 this.aud[0].PlayOneShot(this.C4); 36 this.aud[1].PlayOneShot(this.E4); 37 } 38} 39

音を割り当てているInspectorウィンドウです,

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itagagaki

2021/09/26 14:55

仮に if(Input.GetKey(KeyCode.Space)) { aud[0].Play(); aud[1].Play(); } としたら、スペースキーで同時に鳴りますか?
kabatiro

2021/09/27 02:17

同時にはならないですね...1テンポ遅れちゃいますね.具体的にどれくらいおくれているのかはわからないですが,フレームの限界なのかもしれません.
guest

回答2

0

自分ならこう書くかなと思います。

c#

1using UnityEngine; 2 3public class Keyboard : MonoBehaviour 4{ 5 [SerializeField] AudioClip _clip1 = default; 6 [SerializeField] AudioClip _clip2 = default; 7 AudioSource _audioSource1 = default; 8 AudioSource _audioSource2 = default; 9 10 void Start() 11 { 12 _audioSource1 = gameObject.AddComponent<AudioSource>(); 13 _audioSource2 = gameObject.AddComponent<AudioSource>(); 14 _audioSource1.clip = _clip1; 15 _audioSource2.clip = _clip2; 16 } 17 18 void Update() 19 { 20 if (Input.GetKeyDown(KeyCode.F)) 21 { 22 _audioSource1.Play(); 23 } 24 25 if (Input.GetKeyDown(KeyCode.Space)) 26 { 27 _audioSource2.Play(); 28 } 29 30 if (Input.GetKeyUp(KeyCode.F)) 31 { 32 _audioSource1.Stop(); 33 } 34 35 if (Input.GetKeyUp(KeyCode.Space)) 36 { 37 _audioSource2.Stop(); 38 } 39 } 40}

投稿2021/09/26 15:55

bboydaisuke

総合スコア5277

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

2人の方に質問と回答をいただきましたが,それでも1テンポ遅れたままで改善されませんでした.その後さらに音の容量を少なくしたところ解決しました(10kB→5kB).この点に関しては自分の確認不足でした.大変申し訳ありません.回答質問していただいたitagagakiさん,bboydaisukeさんありがとうございました.

投稿2021/09/27 02:30

kabatiro

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問