連載 :
実践!iOSで作るゲームアプリゲームの仕上げ
2011年6月3日(金)

今回でこの連載も最終回となる、最後にサウンド再生、残りタイム表示と、ゲームがタイトル画面とゲーム画面のフローでループできるよう実装して、ゲーム部分の仕上げをしたいと思う。
サウンドの再生
まずはサウンドの再生から実装していこう。ゲーム中ではSE(サウンドエフェクト)とBGMの2つを鳴らすが、それぞれ必要なフレームワークをプロジェクトに追加する必要がある。AudioToolboxとAVFoundationの2つのフレームワークを追加しよう。
そして、GameController.h に以下のようにサウンド用のプロパティーを追加しておく。
01 | @interface GameController : NSObject { |
02 | GameBoardView *gameView; |
03 | GamePieceView *pieceView; //うさぎ |
04 | GamePieceView *enemyView; //オオカミ |
05 | int carotCount; |
06 | BOOL isGameClear; |
07 |
08 | //サウンド |
09 | NSMutableArray* seArray; //SEの配列 |
10 | AVAudioPlayer* bgmPlayer; //BGM再生クラス |
11 | } |
SEの再生
まずSEを再生しよう。サウンドデータを作りプロジェクトに追加する必要がある、本来はシーンごとにSEを用意するのだが今回は1つのSEを鳴らすようにする。iOSでは .aif / .wav / .mp3 などの一般的なフォーマットを再生することができるが、今回は se00.caf というコア・オーディオというフォーマットのサウンドファイルを使用することにする。コア・オーディオファイルについては後ほど説明する。
SEは再生用のクラスとそのインスタンス作り、それで再生を行う。以下がSE再生用のクラスになる。
<クラス定義>
1 | #import <UIKit/UIKit.h> |
2 | #import <AudioToolbox/AudioServices.h> |
3 |
4 | @interface SoundEffect : NSObject { |
5 | SystemSoundID soundID; |
6 | } |
7 | - (id)initWithContentsOfFile:(NSString *)path; |
8 | - (void)play; |
9 | @end |
<クラス実装部>
01 | #import "SoundEffect.h" |
02 |
03 | @implementation SoundEffect |
04 | - (id)initWithContentsOfFile:(NSString *)path { |
05 | self = [super init]; |
06 | if (self != nil) { |
07 | NSURL *aFileURL = [NSURL fileURLWithPath:path isDirectory:NO]; |
08 | AudioServicesCreateSystemSoundID((CFURLRef)aFileURL, &soundID); |
09 | } |
10 | return self; |
11 | } |
12 |
13 | -(void)dealloc { |
14 | AudioServicesDisposeSystemSoundID(soundID); |
15 | [super dealloc]; |
16 | } |
17 |
18 | -(void)play { |
19 | AudioServicesPlaySystemSound(soundID); |
20 | } |
21 |
22 | @end |
23 |
24 | GameControllerクラスの初期化時に以下のコードを追加して SoundEffectのインスタンスを配列の保持しておく。 |
25 |
26 | // SE |
27 | seArray = autorelease]; |
28 | efView.isFinishDelete = NO; |
29 | efView.isLoop = NO; |
30 | [gameView addSubview:efView]; |
31 | efView.center = CGPointMake(320/2, 460/2); |
32 | [efView setAnimeBoundsScaleFrom:0.0 To:1.0 Duration:0.5]; |
33 | } |
34 | } |
「ゲームの仕上げ」サンプルプログラム
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。