2008年度ゲームプログラミング ゲームプログラミング 第6回:音を鳴らそう! (効果音とBGMの再生) 2008年度ゲームプログラミング 音ファイルの種類 wavファイル=音の波形データが入っている midiファイル=楽譜データ (音色、音程、鳴らすタイミング)が入っている 携帯では主にmidiを変換したファイルを使う。 docomo→mldファイル au→pmd,mmfファイル(機種によって異なる ) vodafone→spf,mmfファイル 2008年度ゲームプログラミング gameCanvasでの音の扱い gameCanvasでは、音を二つに分けて扱っ ている。 – 効果音 • 一度しかならない • 同時に多数の効果音が鳴りえる – BGM • ループで鳴り続ける • 排他的で、BGM 0とBGM 1が同時になることはな い – *実は効果音をループで鳴らしたり、BGMを複数鳴らすこ とは出来ます。ただ、ややこしいので説明を省きます 2008年度ゲームプログラミング 効果音を鳴らす準備 効果音データの準備 サンプルデータのsnd0.mldをresフォルダへ。 ファイル読み込み gameCanvasがsndX.mldをXが0から順に読 み込んでいく。sndX.mldはgameCanvasでは 効果音として読み込まれる。BGMとして読み込 みたい場合は、後ほど紹介 2008年度ゲームプログラミング ボールが跳ね返った時に鳴らす 跳ね返り処理のところで、 gc.playSe(効果音番号); を呼ぶと、効果音が1回だけ鳴る。 効果音番号は、0を入れるとsnd0.mldについて の操作になる。 効果音を止めたい時は gc.stopSe(); 2008年度ゲームプログラミング 複数の効果音を鳴らす 音番号を0にするとsnd0.mldが再生される。 snd1.mldやsnd2.mldを鳴らしたいときは resフォルダにファイルを入れれば使える。 ただし途中で番号が途切れないように… gc.playSe(1); →snd1.mldを再生 2008年度ゲームプログラミング BGMの準備(1) まずは、マシン内を検索してmidiファイ ルを探そう(「*.MID」で検索) なかったらインターネットから拾ってこよ う ツールを使ってmidiデータをmldに変換 。 2008年度ゲームプログラミング BGMの準備(2) 効果音は sndX.mldだったが、BGMは bgmX.mldを読み込む なので変換したmldをbgmX.mld(Xは数値) に改名 あとはgameCanvasが bgm0.mldから順番 にBGMとして読み込んでくれる。 2008年度ゲームプログラミング BGMを再生してみよう。 効果音の時はplaySeでしたが、BGMの時は命 令が変わります。 gc.playBgm(BGM番号); ボリューム調節もできる。 gc.changeBgmVolume(音量); 音量は、0~100の間で指定 実は効果音も同様にボリューム調整できる gc.changeSeVolume(音量); 2008年度ゲームプログラミング ゲームのBGMを流す initGameの中で ・BGMを再生する命令 とすると、ゲームを開始する度に曲の最初か ら再生する。 2008年度ゲームプログラミング 初回起動時にinitGameを呼ぶ コンストラクタを抜け出た後で音データが読み 込まれるので、コンストラクタ内での再生命令 は無視される。 →最初のupdateGameで初期化されるように 変更 int gameState = -1; //未初期化 updateGame内で if(gameState== -1 ){ initGame();//未初期化だったら初期化 } 2008年度ゲームプログラミング ボールを20回受けたらクリアー ボールを受けた回数を保存する変数が必要 int p; 跳ね返り処理のところで、回数を1増やす p++; 回数が20以上になったらgameStateを2にす る。 →ゲーム中断 if(pが20以上だったら){ gameStateを2に;} 2008年度ゲームプログラミング クリアー時の効果音と画面表示 gameStateを2にした時に、効果音を鳴らす 命令を呼ぶ。(gc.playSe) drawGame()の中でgameStateに応じて メッセージを表示 if(gameState==1)ゲームオーバーと表示 if(gameState==2)ゲームクリアーと表示 2008年度ゲームプログラミング 跳ね返り方を変える(1) 常に跳ね返り方が一定 →ひたすら受身なゲーム ボールの跳ね返り方を変える →プレイヤーがボールを操作できる →戦略的に遊べる ボールをキャッチする機能などでも、 プレイヤーによるボール操作は可能 2008年度ゲームプログラミング 跳ね返り方を変える(2) 動いているかどうかの判断は操作方法に よって異なる bardxを使用 →bardxが0でなかったら bardxを使っていない →当たった瞬間にキーが押されていたら →キーの状態を保存する機能が必要 2008年度ゲームプログラミング 跳ね返り方を変える(3) 処理の流れ if(バーをボールで跳ね返す条件){ dy=-dy; // 通常の跳ね返り処理 if(バーが右に動いている)dx++; if(バーが左に動いている)dx--; } ゲームが簡単になり過ぎないよう、調整が必 要(上の壁ではランダムで跳ね返る、等)
© Copyright 2024 ExpyDoc