ゆにてぃ
Arduino で作りたいMIDIコントローラーの仕様が纏まってきたので、買いに行こうと思ったらまさかの在庫切れ&入荷待ち。 こんな事なら本体だけ先に買っておけば良かった… orz 行き場を失ってしまった作るエネルギーをどうしようかということで、夏頃に名前をちらっと耳にして気になっていた Unity というゲーム開発環境を弄り始めました。 横スクロールSTGを作るぞー! でも始めたばかりで先は長い
ここ数日間 3D Platform Game Tutorial というチュートリアルを手始めにやってみました。 制作の流れを俯瞰するようなチュートリアルで面白い。 ただ、ドキュメントが所々判り難いのとソフト自体のヴァージョンの違いによる混乱も少しあったり。
GUIの章で詰まってしまい困っていたところ、チュートリアルの体験記を丁寧な解説画像付きで公開している「おじさんのプログラミング」というブログをみつけて、参考にさせて頂きました。 ドキュメント片手の作業は結果を確認する手立てが無いので、こういう記事は本当に助かります。 画面を見比べながら手順を再確認したところ、41ページの「ThirdPersonStatusスクリプトをPlayerゲームオブジェクトに追加」の一行を見逃してたことが判明。 参照ステータスが存在しないから表示スクリプトが実行できないよ、ってそりゃそうですねw
Unityを使ってみた感想ですが、制作におけるプロセスがシステムベースではなくシーン(舞台)を中心にしているのが一見複雑な様で判り易く、紙の上で妄想して描いたりするのに近い思考でゲームを組み立てていけるという印象。 もちろん労力と時間は必要だけど。 最近みかける、歩き回り、銃を撃ち、車に乗れば助手席のグローブボックスをあけ、さらに運転をするという一連の動作をシームレスに行うゲームって、どんな処理をしているんだろうと疑問だったんだけど、こういうシステムを使ってるのかな?
・ Unity 公式
・ おじさんのプログラミング
・ Unityの基礎 (有志によるドキュメント翻訳サイト)
- - - 以下 Unity チュートリアルのつまづいた点、解決案など - - -
■ Prefab のリンクが切れてしまう事がある
unity3D って面白そう20 (via. おじさんのプログラミング) の記事と同じくライフ回復アイテムは音が鳴るのに燃料缶は音が鳴らない状態になり気付きました。 燃料缶を試しに Project からシーンへ配置してプレイしたところ、今度は音が鳴るので、変だなと思い Hierarchy ビューから初期配置されている燃料缶を検索してみたら、通常 Prefab は青色で表示されるところが赤色(濃赤)になっています。 Inspector ビューで確認すると missing と表示。
公式ドキュメントでは説明を見つけられませんでしたが、ユーザーフォーラムの書き込みを検索したところ、この表示はゲームオブジェクトが Prefab 元をロストして見つからなくなってしまった状態とのこと。 この状態では Prefab の方を編集しても内容が反映されません。 確認のため、サンプル・データのオリジナル(編集前)を開いてみたところ fuelCellPrefab は正常に機能しているので、チュートリアルを進めるうち、気付かずリンクを切るような操作をしてしまったみたいです。
燃料缶の音が鳴らない場合の解決策にはならないかもしれませんが、Prefab 編集の結果が機能して無い気がする場合は確認してみると良いかもしれません。 データを消してしまってロストした Prefab はデータを元に戻せば修正できるそうです。 他の場合に再設定する方法は自分の調べた範囲では見つからず、Prefab の入れ替えとか需要がありそうなので出来そうだけど…現時点での解決策は再配置しか無いかな。
実際の作業画面です(クリックで拡大できます)。よくみると、親要素の level から下のゲームオブジェクトが全て prefab missing の状態になっているので、操作ミスで level オブジェクトを prefab 化した後に元をロストするというような操作をしてしまったのかも。
■ メニュー・ゲームオーバーでシーンの移動が動作しない
unity3D って面白そう26 (via. おじさんのプログラミング) と同じ状態です。 エラーログを見ながらいろいろ弄ってみたら解決策っぽいのが見つかりました。 方法は Build Settings に各シーンを登録、チェックをいれること。 Build Settings は最終出力時の設定でプレビューには影響しないのかなとも思いましたが、実際にチェックを外して試してみるとシーン移動が機能しなくなるのでこの設定でOKっぽいです。自分は手動で登録したけど、本来は自動的に登録されるのだろうか…
実際の作業画面です(クリックで拡大できます)。 ちなみに StartMenu.unity を間違って二度登録してしまったので、一つのチェックを外した状態にしてます。
■ 敵ロボット待機(Idle)時の音がフィールド全体で鳴ってしまう
これは使用しているUnityとチュートリアルのヴァージョン違いによる問題かな、サウンド関連の設定項目がドキュメントの表示と大分違うので仕様変更があったのかも。 チュートリアル・ドキュメントでは Min Volume と Max Volume の設定が確認できるので(P.95)、フィールド上のプレイヤーとの位置関係でサウンドの音量が変化するものと予想。
敵ロボットの待機時の音源 CooperIdleLoop はステレオ音源で尚且つ初期状態では 2Dサウンドに設定されているので CooperIdleLoop の Inspector ビューを開き 3D Sound の項目にチェック入れます(オーディオ変換処理が行われるので終わるまで待ちます)。 これで Copper / Inspector 表示、Audio Source 内の 3D Sound Setting が有効になるので丁度いい距離に調節します(サウンド有効範囲は Max Distance で設定、Scene ビューで実際の範囲を確認できます)
実際の作業画面です(クリックで拡大できます)。