現在ピアノの機能を作っており、下のスクリーンショットのように鍵盤を三つ並べてみて以下のスクリプトをそれぞれの鍵盤のオブジェクトに適用しました。
C#
1void Update () { 2 if (Input.GetMouseButtonDown(0)) { 3 4 Vector2 tapPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition); 5 Collider2D collition2d = Physics2D.OverlapPoint(tapPoint); 6 7 if (collition2d) { 8 RaycastHit2D hitObject = Physics2D.Raycast(tapPoint, -Vector2.up); 9 10 if (hitObject) { 11 switch (hitObject.collider.gameObject.tag) { 12 case "C": 13 keySound.PlayOneShot (keySound.clip); 14 break; 15 case "C#": 16 keySound.PlayOneShot (keySound.clip); 17 break; 18 case "D": 19 keySound.PlayOneShot (keySound.clip); 20 break; 21 default: 22 break; 23 } 24 25 } 26 } 27 } 28 }
しかしいざ実行してみると、左端の鍵盤を押したにもかかわらず、CとC#とDの音が同時に再生されて音が濁った感じで聞こえてしまいます。デバッグしてみると、
case "C":
keySound.PlayOneShot (keySound.clip);
が3回実行されていました。なぜここが3回実行されているのでしょうか?
そして、PlayOneShotを通るたびに、C → C# → Dというように音が再生されていました。
それぞれの鍵盤を押してそれぞれの音を再生させるには、どうすればいいでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/21 07:58