GP11 チーム制作 06

やることリスト

サンプルデータのダウンロード

モデルデータのサンプル

JerryCanModel.zip

オーディオデータのサンプル

SampleAudioClips.zip

サウンドを鳴らしてみよう

データのインポート

Unity は各種のオーディオデータ形式に対応している(例:wav, aiff, mp3)。最も無難なのは wav 形式を使うこと。専門の人に制作を依頼する場合は「wav 形式の 16 bit / 44.1 kHz のリニア PCM」と指定すればよい。

例のごとく、ファイルを Project ビューにドラッグ&ドロップするだけでインポートは完了する。

オーディオデータの設定

インポートしたオーディオデータ(Unity では “Audio Clip” と呼ばれる)を選択すると Inspector に次のような項目が表示される。

Audio Clip

“Audio Format” は Unity 内部でオーディオデータをどのような形式で保持するか設定するもの。 “Native (WAV)” は非圧縮で保持することを意味する。音質は良いがデータ容量はかなり大きくなる。これを “Compressed (OGGVORBIS)” に変更すると圧縮して保持されるようになる。音質は若干落ちるがデータ容量は小さくなる。

“3D Sound” はカメラと音源の相対関係によって音の低位(ステレオ位置)や音量を変化させるというオプション。主観視点のゲームを作るには便利なオプションだが、客観視点のゲームではかえって邪魔になることもある。

今回は次のように設定しておこう。

項目を変更したあとに Apply ボタンを押さないと適用されないので注意。

効果音を鳴らしてみる

大砲が弾を発射するときに音を鳴らすようにしてみよう。

音を鳴らす機能は AudioSource コンポーネントに実装されている。これを音を鳴らすゲームオブジェクトに追加しよう。ここでは Launcher ゲームオブジェクトに追加すればいいはず。Launcher ゲームオブジェクトを選択したのちにメインメニューの Component → Audio → Audio Source を選択する。

Audio Clip

AudioSource コンポーネントには様々なオプションがあるが、ここではごく一部だけを解説する。まず “Audio Clip” は、この AudioSource で鳴らすオーディオクリップを指定するもの。オーディオクリップ Fire をドラッグ&ドロップで設定しよう。その少し下にある “Play On Awake” は動作開始直後に自動的に鳴らすためのオプション。ここではスクリプトの制御によって鳴らしたいので、このスイッチは外しておく。

AudioSource の設定が完了したら、次は Launcher スクリプトに音を鳴らすための処理を追加する。次のようにボタン押下によって弾丸を生成している部分があると思う。

if (GUI.Button(Rect(0.75 * sw, 0.85 * sh, 0.2 * sw, 0.1 * sh), "FIRE!")) {
    var shell : GameObject =
      Instantiate(shellPrefab, transform.position, Quaternion.identity);
    shell.rigidbody.velocity = transform.up * power;
}

ここに次の一行を追加する。

audio.Play();

これで AudioSource コンポーネントの Audio Clip に設定されたオーディオクリップが再生される。

同じようにして目標を破壊したタイミングでも音が鳴るようにしてみよう。

BGM

BGM を鳴らすのはもっと簡単にできる。

これだけでいい。あとは “Play On Awake” スイッチの機能により、勝手に再生が開始される。

3D モデルを使ってみよう

ファイル形式について

Unity は様々なファイル形式に対応しているが、3D モデルを扱うのに最も無難なのは FBX 形式だと言われている。この授業でもデータの受け取りは FBX 形式で行うようにしよう。

サンプルデータの中には次のファイルが格納されている。

基本的には例のごとくドラッグ&ドロップするだけでインポートできるが、この場合は2つのファイルを同時にドラッグ&ドロップするのが良い。そうすることでマテリアルに対するテクスチャの設定までを自動的に行ってくれる。

モデリングツールについて

ゲーム業界では Maya3D Studio Max といったツールがよく使われる。国内では XSI を使っているところもある(最近はちょっと少数派)。これらのツールは効果なので、プログラマーが使うツールとしてはあまりすすめられない。

国内で安価に使えるモデリングツールとしてはメタセコイアが有名。でも Unity ではメタセコイアのファイル形式を直接に使うことはできない。プラグインを使って fbx 形式に変換する必要がある。

Mac の場合は Cheetah3D が安価で使いやすい。

Windows / Mac の両方で使えるフリーのツールとして Blender があるが、かなり特殊な設計思想を持ったソフトであり、正直なところあまりすすめられない。

モデルを配置してみよう

インポートした FBX ファイルはプレハブと同様の扱いになる。シーン中に配置するには、これを Hierarchy ビューにドラッグ&ドロップするだけでよい。

実際に配置してみると、モデルが恐ろしく小さいことに気付くと思う。これは FBX ファイルのインポート時に 0.01 のスケールが適用されている事に起因する(不思議だが諸々の事情により 0.01 がデフォルト値になっている)。これを 1.0 にすれば本来のスケールに直るはず。

Project ビュー上の FBX ファイルを選択すると Inspector 上にインポーターのオプションが表示される。

FBX Impoter

ここにある “Scale Factor” がインポート時のスケールを操作するオプション。これを “1” に直して Apply ボタンを押せば本来の大きさになる。

コリジョンを付けよう

Unity にはメッシュ(平たく言うとポリゴンモデルのこと)にコリジョンを付けるための仕組みとして Mesh Collider コンポーネントがある。しかし、この Mesh Collider は基本的に静止物にしか使えない。

このポリタンクのように動き回る物体にコリジョンを付けるには Box Collider や Sphere Collider を使う必要がある。例えば次のように箱で大まかに括ってやれば、それなりにリアルな動きをするはず。

Collider

あるいは、次のように複数の箱を組み合わせて形状を作るのでもよい。この場合、モデルがあるゲームオブジェクトの子の構造として複数のゲームオブジェクトを持つことになる(Rigidbody は親側に付けること)。

Collider

Box Collider の形状を調整するには、Box Collider コンポーネントのパラメーターにある Center や Size を使う。 Shift キーを押しながら緑の枠をドラッグすることでも調整可能。

2D 表示にモデルを使う

以前の授業で配布した CommonAssets の中に Quad.fbx というモデルが含まれている。これは単なる板きれのモデルで、 2D 表示を行うために用意したもの。

このモデルにテクスチャを貼付ければ 2D 表示として使うことができる。例えばタイトル画面の表示とか、背景の一枚絵の表示などには、このモデルを使おう。

なおこのような 2D 表示を行う場合、たいていライティングは不要になる。ライティングを行わないようにするには、マテリアルのシェーダーとして “Unlit/Texture” を使えばよい。また、ライティングを無効にしつつ透過させるには “Unlit/Transparent” を使う。

ちょっと高度なトピック

ここは余裕があれば解説します。

現状をアップしよう

今後はチーム毎の制作実習に移行する。制作を進めていくにあたって、常に最新状態のビルドをサーバーにアップし続けてもらいたい(毎週の授業の終わりにアップするのが理想)。これにはチーム内における情報共有を実現するという目的のほか、講師・教員側での現状確認を可能にするという目的もある。もちろん評価にも使う。

提出場所は以下の通り。

\\10.25.30.90\Public\チーム制作2011_1年次

ここに Web Player 用のビルドを格納する。なお Build Settings において Offline Deployment をオンにしておくのがベター(無くてもなんとかなるが)。