見出し画像

戦車でGO! 制作記

去年の夏から秋ごろにかけて『戦車でGO』という3DシューティングゲームをUnityで作ってみたので、その時の過程など。


制作開始まで

今まで2Dゲームばかり作っていたので、何か3Dゲームを作ろうかと思っていました。
最初はヘリか飛行機の3Dゲームを作ろうとしていましたが、上下左右移動が複雑なので放棄。
この時の作りかけは、後に「spitfireでGo」となってUnityRoomでいちおう公開されています。

地上なら上下移動を考えなくてよいということで戦車に決定。
戦車素材もアセットストアで「WW2 Armed Forces Demo」という無料の物が見つかったので。
このアセット、この時点で12の戦車が入っていて、種類が豊富でゲーム向きでした。

戦車の移動処理

戦車を移動させる処理がなかなか大変。
縦スクロールや横スクロールシューティングと違い、自機の向きが360度変化するので混乱しやすかったです。
といっても、以前2Dの全方位シューティングを作っていたので、その時のコードを参考にできたのは幸い。

攻撃処理

弾の発射処理は比較的簡単、砲身の向いている方向に弾を飛ばすだけ。
弾は一定時間飛行すると消滅。といっても実際のゲーム中は一定時間経過するまえに敵か建物に当たるので、最終的にこの処理は不要でした。
弾の当たり判定はRigidBody + Colliderを使いました。

コンピューターの移動処理

自分の戦車と敵の戦車を1台ずつマップ上に出し、撃ちあいをできるようになると、敵が障害物をよけて移動するような処理が必要になりました。
Unityの場合、ナビメッシュと言われるルート探索して移動する物が用意されているので、それを使っては見たものの、なかなか思うように行かず。
このゲームを作る上で一番苦労した箇所になりました。

マップを作ったが、マップを一つしか作れない問題

ナビメッシュは一つのシーンにつき一個しか用意できないらしく(後で解決)、ゲームを通してマップは一つしか用意できないという事になりました。
ステージごとにシーンを分ける方法を使えば解決できるのは知っていましたが、ステージごとにシーンを用意するのは手間がかかるという事で、行いませんでした。
マップが一つだけで何ステージもやっていると飽き来るので、ステージによって自軍と敵軍の場所が変わる対策をとりました。

M4シャーマンでT34を破壊できないバグ

ある程度戦車好きじゃないと分からないかもしれませんが、M4は車高が高く、T34は逆に車高が低い戦車です。
このゲームは全て水平射撃のため、M4が水平射撃を行うと、車高の低いT34の上を弾が抜け、弾が当たらないバグが発生してしまいました。
解決するため、T34のような車高の低い戦車でも、当たり判定はやや高めにまで用意されています。

各ステージと、それをつなぐ物語の作成

戦車で撃ちあう部分は完成したので、それをつなぐ部分が必要になりました。
各ステージ間で、あやしい軍人風の男が次の試合内容などを説明してくれるシーンです。

このプログラムは以前作った別ゲームの『栃木ディフェンス』のコードを流用しました。
流用したのはコードだけでなく、グラフィックと人物も流用してしまいました。

おかげで物語はおかしな感じになってしまいました。
制作開始時に予定していた戦争的なゲームではなく、戦車で戦う大会になりました。

また、ゲーム中、敵を倒した時などにキャラがしゃべる表示がありますが、これも栃木ディフェンスのコードを使っています。


とりあえずの完成と公開

こうしてとりあえず完成したので、Unityで作られたゲームが集まっているサイトのUnityRoomで公開しようとしました。
しかし、この時点でゲームタイトルが決まっていません。
制作中はTankBattle3Dという名前のゲームでしたが、このままで公開するわけもいかず、ここでタイトルを決めるのに三日三晩悩みました。
そうして決まったタイトルは『戦車でGO!』
この名前での公開となりました。

作り始めたのが8/17
UnityRoomへの公開が9/4
ナビメッシュでかなり手間取った記憶があるわりには、半月ほどで公開にこぎつける事ができました。
公開後の事はまた後程。


この記事が気に入ったらサポートをしてみませんか?