- 破壊されたオブジェクトから音を鳴らしたい!
という悩みを解決します。
結論として【PlayClipAtPoint】メソッドを使うことで、実質的に破壊されたオブジェクトから音を鳴らすことができます。
厳密には破壊されたオブジェクトから、音が出ているように見せかけることができます。
【PlayClipAtPoint】メソッドの説明
オブジェクトが破壊されたときに音を【PlayClipAtPoint】メソッドを使って鳴らすとしましょう。
オブジェクトが破壊
↓
好きな座標に新しいオブジェクトを生成
↓
それが音源を再生
↓
新しいオブジェクトが破壊される
このようにして音を再生します。
破壊されるオブジェクトから音がなりません。ただなっているように見せかけることができるのが、【PlayClipAtPoint】メソッドです。
指定した場所にオブジェクトをつくって、そいつに音を再生させて、用済みになったら破壊します、そんな残酷なやつが【PlayClipAtPoint】です。
【PlayClipAtPoint】メソッドの使い方
// 音源を格納
public AudioClip clip;
// これで再生
AudioSource.PlayClipAtPoint(clip, transform.position);
clipには音源を格納している状態で、このように使うことができます。
実際に【PlayClipAtPoint】を使ってみる
このようにCubeにスクリプトがアタッチされている状態とします。
スクリプト例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeController : MonoBehaviour {
// 音源格納する変数
public AudioClip clip;
// Use this for initialization
void Start () {
// オブジェクト破壊
Destroy(gameObject);
// 音再生
AudioSource.PlayClipAtPoint(clip, transform.position);
}
// Update is called once per frame
void Update () {
}
}
Destroy(gameObject); | オブジェクト破壊 |
AudioSource.PlayClipAtPoint(clip, transform.position); | 新しいオブジェクトを作成して、音を再生して、自らを破壊 |
AudioSource.PlayClipAtPoint(clip, transform.position);
音を再生したい箇所に、上のスクリプトを書いてください。
音源を格納
【音源をclipにドラッグ&ドロップ】
再生したい音源を設置してください。
実行
なにかHierarchyに新しいオブジェクトが発生しました。このオブジェクトが音源を再生してくれています。
すぐ消えちゃうの、せつない( ・∇・)
まとめ
- 【PlayClipAtPoint】で破壊されるオブジェクトから音がなっているように見せかけれる
- オブジェクトを作る→音を再生する→そのオブジェクトを破壊が【PlayClipAtPoint】の流れ
破壊されるオブジェクトだけじゃなくて、ほかに用途がありそうですね。
ちなみに【Unity2Dサンプルゲーム】爆弾を避けよ!~11~でも【PlayClipAtPoint】が使われています。
ゲームの中でどのように使っているかを知りたい人はご覧してね。
破壊されたオブジェクトから・指定した場所から音再生!PlayClipAtPointの説明と使い方でした。
さぎのみや(@saginomiya8)でした。
コメント