ゲームで使いたいサウンドファイルは「Assets」フォルダの中に入れておく。
フォルダの中にさらにフォルダを作っても良い。
使えるファイル形式はwave形式(.wav)のみ。
例えば、Playerクラスで音を鳴らす場合で説明する。
サウンドは全て番号で管理するので、その番号を入れるあ変数を用意する。(名前は何でもOK)
<Player.h> (太字部分を追加)
#pragma once
#include "Engine/gameObject.h"
class Player : public GameObject
{
private:
int hSound_; //サウンド番号
public:
クラスのメンバ変数を作ったら、必ずコンストラクタで初期化する。
画像の番号は0以上(0も含む)の値になるので-1にしておく。
<Player.cpp> (太字部分を追加)
Player::Player(GameObject * parent)
:GameObject(parent, "Player"), hSound_(-1)
{
}
次にサウンドファイルをロードする。
#include "Engine/Audio.h"
void Player::Initialize()
{
//サウンドデータのロード
hSound_ = Audio::Load("ファイル名");
assert(hSound_ >= 0);
}
Sudio::Loadがサウンドファイルをロードする関数で、引数にファイル名(フォルダ名含む)を指定する。
そのためにはAudio.hのインクルードが必要になる。
これでhSound_にサウンドの番号が入るが、ファイル名を間違っているなどしてロードできなかった場合は-1が入る。
ロードすればいつでも再生できる。
Audio::Play(hSound_);
これで、サウンドが鳴るはず。
Audio::Playがサウンドを鳴らす関数で、引数が鳴らしたいサウンドの番号。
シューティングの弾を撃つ時のように連続で音を鳴らしたい場合、通常では今鳴っている音が完全に止まるまで同じ音は鳴らない。
これを解決したい場合は、Load関数の第2引数に「同時に鳴らしたい最大数」を指定する(省略すれば1になる)
hSound_ = Audio::Load("ファイル名", 3);
例えばこのように書くと、同時に3つまでこの音を再生できる。
この値を大きくするとメモリを無駄に喰うと思うので、あまり大きな値にしないように。
再生中のサウンドを止めたい場合は次のように書く。
Audio::Stop(hSound_);
引数は止めたいサウンドの番号。