PC ゲーム「Corona Attack」をリリースしました(その2)
どうも、AETA(イータ)です。
「不要不急の外出すんなよ!家でプレステでもしとけ!パーティーとかやるなら火炎放射器持った治安部隊送るぞ!」と色んな国で偉い人たちがおっしゃってますが、最低限の買い物は必要なわけでして…
都心に近い方は買い占めとかで大変かと思います。アタクシが住んでいるところは田舎のせいなのか、スーパーでは普通に食料品を売ってましたね。カップ麺もいっぱいあったし。
しかしマスクの供給がなかなか追いついてないみたいですねー。花粉症も少し治まってきたのはありがたいのですが、マスクは相変わらず手放せないので…
かなり早い段階でポリエステル製の洗って繰り返し使えるマスクを入手しておいて良かったです。1枚で10日くらい洗って使い倒してます。
ちなみに色は黒。無難な色にできなかったのはやはり中二病の性なのか…w
さて、前回のブログの続き。Unity で机と椅子をぽこぽこと空から降らせられるようになったところからです。
ちなみに前回のブログで紹介した動画では視点を移動するのに Standard Assets に入っている FPSController (First Person Controller) ってのを使ってます。
これを入れるとキーボードでプレーヤーを操作でき、歩き回るときの視点をそのままスクリーンに表示することが出来るのです。歩くときの靴の音も入って妙にリアル。
上下に画面が別れていますが、上は編集用の確認するためのカメラの画面。下が実際のプレーヤーから見たゲーム画面になります。
38秒辺りから上側の画面奥に白い人影がキー操作によって走り回っているのが見えるかと思います。かわいい♪
でも地べたを走り回るだけじゃあなぁー…机とか椅子が落ちていくのを空中で避けたりしながら追っかけられないかなと思い、作ってみたのがこちら。
おおおおぉっ!あたいが…空を飛んでるーっ!
空中を自由に飛び回るのにはこちらの記事を参考にさせていただきました。ここで FPSController とはおさらば!
球状のオブジェクト(雛形から作られた物体)を少しランダムにふわふわと浮遊させながら、1秒毎に机と椅子をぺっと吐き出すプログラムなんですが…
空飛んで追っかけてるだけなのに…たーのしーっ♪
ちなみに球状のオブジェクトは Sphere(球) っていうのが用意されているんですが、こういったオブジェクトには移動させたときに軌跡をつける Trail Renderer という効果を加えることが出来るんですね。
見失わないように軽い気持ちでつけてみたのですが、パラメータ設定や貼り付けるテクスチャによって、動画のような煙っぽい軌跡をつけることも出来るのです。
これでちょっと閃きまして。
弾を撃ったときの弾道を軌跡で描いたらかっこいいんじゃないかと。
そしてやってみたのがこちら。
弾が自分にぶつからないように発射位置を自分より画面奥側に、発射方向を自分の向いている方向にするため Ray という関数を使い、力を加える関数 AddForce に渡してやると画面中央の方向に向かって弾が飛んでいく、そんな仕組みです。
ところが、真っ直ぐに飛ぶときと下に落ちちゃうときがあって、なんでかなーと悩んでたのですが…
形状に Capsule(カプセル) を選んでたからなのですね!(ラグビーボールを蹴ったら毎回同じようには飛んでいかないのと同じ)
Unity の物理演算さん…律儀過ぎるでぇ…
で、弾を球状にして、逃げる相手を Standard Assets の中にあったコインにして撃ち落とせるようにしてみたのがこちら。
わわっ!なんかゲームっぽいw
最後に弾はコインに当たったんですが、物理演算でコインが跳ね飛ばされて飛んでいってしまうという…w
そしてまたついつい寄り道をするなど。
寄り道したっていいじゃない!プログラミングが好きなんだから!
さて、そろそろ弾を撃ったりコインに当てたらやっぱり何か音が欲しいよねってことで…
Audio Source ってのをオブジェクトに持たせて音を鳴らすようにしてみました!
ちょっとした効果音なら Standard Assets の中にも用意されているんですよね。Standard Assets たんマジ優秀!
もちろん Unity ではそれ以外のゲーム用に用意された効果音アセット(無料または有料)をエディタ上でダウンロードしてプロジェクトに組み込めますし、ネットのフリー素材音を利用することも可能です。
それにしても一番驚いたのは音が発生している 3D の位置に合わせてパンやドップラー効果がかかるって…凄い!
(twitter の投稿だとモノラルになってしまうので…分かりにくくてすみません)
そして弾がコインに命中したときに音だけじゃ寂しいので爆発させてみました。
これも Standard Assets の中に Explosion という爆発エフェクトを持ったオブジェクトが用意されていまして、コイン側では弾に当たったら Destroy という関数で消滅、弾側ではコインに当たったらその位置で Explosion オブジェクトを生成、とこんな感じです。
コインと弾でそれぞれスクリプト(どんな動きをするか、何かにぶつかったときにどうするかを書いたプログラム)を用意するのですが、消滅するコイン側で Explosion を生成させると、親子関係があるので Explosion も一緒に消滅しちゃうんですよねー。
この辺はうっかりやってしまいがちなので注意が必要かも。
さて、こういったゲームをプレイするにはやっぱりあれが必要じゃないですか。
ジョイスティックコントローラー!
アタクシ、この辺りの知識が全く無かったので、ゲームセンターにあるような本格的なのがいいなと思って中古で探したらこれがヒットしました。(1,000円で購入)
The King of Fighters XII 用の EX0026 という商品らしいのですが…
一応 PC でも使えるらしく、PS3 対応なのでなんとかなるかなと。
Unity で動作確認するには調べる時間が必要だったので、慣れた Processing でこちらの記事を参考にプログラムを作って動作確認。
こいつ…動くぞ?!(10年前の中古だったので不安だった)
そして偶然にもこのような情報を見つけます。
え?!自分で地形とかの3Dマップ作らなくてもいいじゃん!
ってことで大喜びでインストール。しかしここでふと不安が。
そう、あの衝突すっぽ抜け問題です。
うわぁ…こんな複雑なオブジェクトにどうやって Collider(衝突判定の領域設定)貼ればいいんじゃぁ…?
しかし、世の中にはこういったことに果敢に挑戦してくれるありがたいお方がいるのです。
こちらの記事を参考に Collider を貼ることで、翌日には一気にゲーム画面らしくなりました!
もう感謝しかないですよ…(´;ω;`)ブワッ
なんという圧倒的ゲーム感!
数日前と比べて一気にレベルアップしたような!
この辺りについては長くなるので次回のブログにて…続く。(多分)
Comments