0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Tonyu System 2であほげーを作ろう - その7 サウンド関係

Last updated at Posted at 2018-07-03

記事一覧

第1回 設定とタイトル
第2回 メイン画面
第3回 ターゲットと敵と
第4回 スコア・時間など
第5回 ゲームを公開する
第6回 Twitterにスコアを投稿
第7回 サウンド関係
第8回 物理エンジンなど

はじめに

あほげー開催間近なので,どんどん追加します.
あとゲームに必要な要素といえば,音ですかね,ということで追加しました.

今回のプログラムを開く

2018/7/12訂正:このバージョンでは,サウンドの設定をOFFにしても,1プレイ後タイトルに戻ったときにサウンドの設定がONに戻ってしまう不具合があります.最新バージョンで修正しました(ゲーム内容が変わっちゃってますけど).変更内容はこの記事の最後に説明しています.

音源の追加

まず,素材となる音を追加します.メニューから「ウィンドウ」→「音声リスト」を選び,音声ファイルを追加します.

スクリーンショット 2018-07-03 18.49.15.png

対応している音声ファイルは,スクリーンショットに書いてある通りです.

スクリーンショット 2018-07-03 18.49.18.png

それぞれの音声ファイルには $se_???? というグローバル変数が割り当てられます.

BGMを鳴らすプログラム

Mainクラスで,ゲームスタート,クリア,ゲームオーバーになったときに$sound.playBGM で音声をBGMとして再生します.第一引数に,さきほどの音声リストで追加したファイルに割り当てられた変数名$se_????を指定します.第2引数はループ再生をするかどうかを指定します.

Main
//中略
$sound.playBGM($se_bgm,true);//★ゲーム中に流れるBGM
while($state=="play") {
    //中略
}
switch($state) {
    case "gameover":
    $sound.playBGM($se_death);//★ゲームオーバーになったときのBGM
    new Label{text="ゲームオーバー",x=230,y=200,size=50};
    $mesg=$theme+""+$score+"個集めたところで"+$subTheme+"に阻まれて無念のリタイア.";
    break;
    case "clear":
    $sound.playBGM($se_fanfare);//★ゲームクリアしたときのBGM
    $mesg=$time+"秒かけて"+$theme+"を見事"+$score+"個集めきった.";
    new Label{text="クリア",x=230,y=200,size=50};
    break;
}

効果音を鳴らすプログラム

Playerクラスでは,プレイヤーがターゲットをとったときに効果音を鳴らしています.$sound.playSEメソッドで鳴らします.後ろについている{rate=1+$score*0.1}は, 再生速度を変化させるためのものです.rate=1 のときがもとのファイルと同じ速さです.ここでは,スコアが増えるにつれて速く再生させています.

Player

pad=new APad;
p=$pat_ahoge26+0;
while(true) {
    x+=pad.vx*5;
    y+=pad.vy*5;
    t=crashTo(Target);
    if (t) {
        //★ターゲットをとったときに効果音
        $sound.playSE($se_coin) {rate=1+$score*0.1};
        $score+=1;
        t.die();
        if ($score>=10) {
            $state="clear";
            break;
        }
    }
    e=crashTo(Enemy);
    if (e) {
        $state="gameover";
        die();
    }
    update();
}

サウンドのON/OFFの設定

音を鳴らしたくない場合は$sound.mute をtrue に設定します.タイトル画面で切り替えられるようにしています.

Title
//前略
//Sound:ON  または Sound:OFF を表示するラベル
sb=new Label{text="Sound:ON",y=360,x=150,size=30};
//切り替えボタン
new Button{
    text="On↔Off",
    left=250,
    top=360,
    width=180,
    height=40,
    onClick=toggleSound
};
$sound.mute=false;
//中略
\toggleSound () {
    //サウンドがONならOFFに,OFFならONに
    $sound.mute=!$sound.mute;
    sb.text=$sound.mute ? "Sound:OFF": "Sound:ON";
    $sound.playSE($se_coin);//ONのときは鳴る
}

2018/7/12訂正:最新バージョンでは,$sound.mute=false;はSetting クラスに移動しました.また,toggleSoundメソッド内のsb.text=$sound.mute ? "Sound:OFF": "Sound:ON";の行をボタンsb生成直後にも実行するようにしています.

おまけ

効果音を作成できるサイトを作りました.使い方はまだ書いていませんが,サンプルを参考にしてください.

Last: 第8回 物理エンジンなど

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?