第08回 音をつける
前章で既にゲームとしての必要な実装はほぼ終わっています。 この章では、プレイヤがー弾を撃った時の音や爆発した時の音、さらにゲームのBGMを実装しましょう。
ゲームで発せられる音はMain CameraにアタッチされているAudio Listenerを通して、スピーカーなどから音が出ます。 3D Soundであれば、音が発した場所とAudio Listenerの距離が考慮され、遠ければ遠いほど音が小さくなります。 3D Soundでなければ2D Soundとなり、音が発した場所とAudio Listenerの距離は考慮されず、一定の音量となります。
bgmファイルをシーンビューへドラッグ&ドロップします。
作成されたbgmゲームオブジェクトを選択し、インスペクターにあるLoopにチェックを入れます。
これからBGMを鳴らすので音量に注意してください。 ゲームを再生してみてください。ゲーム開始と同時にBGMが再生されるはずです。
次はプレイヤーが弾を撃った時のショット音を実装します。
PlayerゲームオブジェクトにAudio
Sourceコンポーネントをアタッチしてください。
アタッチしたら必要なパラメータを設定していきます。 Audio
ClipにはSounds/SE
にあるshootを使用します。ドラッグ&ドロップして格納してください。
Play On
Awakeのチェックを外し、ゲームオブジェクト作成時に音を鳴らさないようにします。
BGMと音の大きさが同じで少し聞きづらいのでVolumeを0.3にします。
最後にPitchを0.64にしましょう。
ショット音をスクリプトから再生します。
Player.cs
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour
{
// Spaceshipコンポーネント
Spaceship spaceship;
IEnumerator Start ()
{
// Spaceshipコンポーネントを取得
spaceship = GetComponent<Spaceship> ();
while (true) {
// 弾をプレイヤーと同じ位置/角度で作成
spaceship.Shot (transform);
// ショット音を鳴らす
GetComponent<AudioSource>().Play();
// shotDelay秒待つ
yield return new WaitForSeconds (spaceship.shotDelay);
}
}
void Update ()
{
// 右・左
float x = Input.GetAxisRaw ("Horizontal");
// 上・下
float y = Input.GetAxisRaw ("Vertical");
// 移動する向きを求める
Vector2 direction = new Vector2 (x, y).normalized;
// 移動
spaceship.Move (direction);
}
// ぶつかった瞬間に呼び出される
void OnTriggerEnter2D (Collider2D c)
{
// レイヤー名を取得
string layerName = LayerMask.LayerToName(c.gameObject.layer);
// レイヤー名がBullet (Enemy)の時は弾を削除
if( layerName == "Bullet (Enemy)")
{
// 弾の削除
Destroy(c.gameObject);
}
// レイヤー名がBullet (Enemy)またはEnemyの場合は爆発
if( layerName == "Bullet (Enemy)" || layerName == "Enemy")
{
// 爆発する
spaceship.Explosion();
// プレイヤーを削除
Destroy (gameObject);
}
}
}
ゲームを再生してみてください。弾を撃つごとにショット音がなっているはずです。
最後に爆発した時の爆発音を実装します。
Sounds/SE
にあるboomをExplosionのプレハブにアタッチしてください。
これで爆発した時に爆発音がなるはずです。
今回はここで終了です。つまずいてしまった方はプロジェクトファイルをダウンロードして新たな気持ちで次の回へ進みましょう。
第01回 スプライトとスプライトアニメーションの作成
第02回 プレイヤーの移動
第03回 プレイヤーから弾を撃つ
第04回 敵を作成しよう
第05回 当たり判定とアニメーションイベントとレイヤー
第06回 背景を作る
第07回 Wave型の仕組み作り
第08回 音をつける
第09回 プレイヤーの移動制限と様々な修正
第10回 タイトルを付ける
第11回 エネミーのHP、弾の攻撃力、アニメーションの追加
第12回 Waveを5個にする、スコアの実装
第01回 複数の解像度に対応する(黒帯を追加する)
第02回 複数の解像度に対応する(引き伸ばす)
第03回 タッチパネル対応
第04回 バーチャルジョイスティック対応