[Unity]「Unity5 3D/2D ゲーム開発 実践入門」CHAPTER 3 終了



今回の CHAPTER3 は「ゲーム作成の基本 - 物理エンジンとコリジョンをマスターする」ということで、赤・青・緑の3種類のボールを指定されたスポットに全てはめればクリア、という簡単なゲーム製作を通じて、Unity の物理エンジンやコリジョンの使い方を覚える、というものだ。

一度でもコリジョン処理を作ったプログラマなら理解頂けるかと思うが、コリジョンは当たったかどうかの判定よりも、当たった後の挙動をいかに上手くやれるかがキモだと思う。
シューティングの弾みたいに当たったら消えるのなら特に気にする必要は無いが、例えば車ゲーで自車が壁に斜めに当たった後、どう処理するか?
無論、前フレームの座標に戻す、なんていうのは愚の骨頂なので、壁に沿って滑らせるような座標補正処理をするのが大半だと思うが、ここで計算をうまくやらないと、壁貫通というバグが起きたりする。
と言って厳密にやり過ぎると処理が重くなってしまい、今後はゲームにならなくなってしまう。
他にも、アクションゲームで自キャラを動かしてNPCや壁に当たった時の座標補正なんかも、うまく処理しないとユーザーが思ったとおりに操作できず、ストレスになってしまう。
特に世界で一番有名なヒゲオヤジのような、ユーザーが任意のタイミングで能動的にジャンプできたりするようなのはマジでツラい。
それでも見た目3Dだと、少々雑な計算して本来あるべき座標とはちょっとくらいズレていてもわかりにくいのだが、見た目2Dドット絵だと、ちょっとのズレが1ドットの差でくっきり現れてしまう。
おまけに固定小数で計算してると、それはもう(以下長くなるので省略)
…という感じで、コリジョン処理の実装はマジで茨の道なのだが、Unity だとそんな苦労もどこへやら、という感じで、Collider を設定するだけであっという間に出来上がってしまう。

物理演算だって、一般的な物理法則に基づくのであれば、単にパラメータを設定するだけで済むので、1kgf == 9.8N とか摩擦係数との組み合わせとか、ややこしいこと考えなくても、何となくでそれっぽいのが出来上がってしまう。
むしろ Scratch で2Dジャンプアクション作る方が、自分で物理法則のプログラムを組まないといけない分、よりハードルは遥かに低いと思う。

ホント、便利な時代になったもんだ。

で、出来上がったのが↓これ。
illumiball_ipad.gif

見て頂ければ分かる通り、ボール自身も発光している。
これも特別なプログラムは組んでおらず、ボールの子に Point Light を追加し、パラメータを設定しただけだ。
また、それぞれのボールのゴール地点となるスポットは、Spot Light を置いているだけ。
これだけで、こんなに見栄えのするシーンが作れてしまう。
この章の主題は「物理エンジンとコリジョンのマスター」だが、個人的にはむしろこっちの方が驚きである。

ちなみにこの章で初めてコードを書いたが、3ファイル合計で200行程度である。
もし自分が、DirectX や OpenGL のみ、もしくはコンソールゲームのSDKのみでこのゲームを作れと言われたら、それこそ何ヶ月かかるかわからないし、途中でギブアップするかも知れない。
ゲーム開発手法の民主化バンザイであるヽ(´ー`)ノ

知れば知るほど、Unity のスゴさが身に沁みてくる。
と同時に、Unity があまりにも多機能な分、自分がやりたいことを実現するには、既存機能のみでできるのか、Asset 追加すればできるのか、自分でプログラムを組まないといけないのか、その見極めをするのがスゴく大変だな、という印象も受けた。
その見極めができるようになった頃、

Unity チョットダケデキル

って言えるようになるのだろうか。

そーいえば「Unity 認定技術者」という、Oracle Master みたいなオレオレ資格があるが、これ取れるくらいになれば、Unity エンジニアとしてそこそこ通用するだろうか。
自分の周りで持ってる人がいないので、どんなものなのかわからないが、これを取ることも視野に入れてもいいかも知れない。

この記事へのコメント