Unityで3Dゲームを作るまでのいろいろな処理を解説する連載。今回は、引数で指定したゲームオブジェクトのインスタンスを作成する「Instantiate」関数や、物理演算エンジンRigidbodyの基本的な使い方を解説する【Windows 10、Unity 5.4に対応。C#のコードを追加】。
Unityで3Dゲームを作るまでのいろいろな処理を解説する本連載「ゲーム開発初心者のためのUnity入門」。前回記事では、これまでの連載のおさらいも含めてAnimatorを一から作成する方法やキー入力でキャラ移動のスクリプトを設定する方法、カメラを追従させる方法など紹介した。
今回は、サンプル作成を通じて、オブジェクトを自動的に生成する方法とUnityの物理演算エンジン「Rigidbody」を使いこなすための基本的な設定や関数について解説する。
今回は少々長くなるが、テクニックを覚えて、それを使って何が作れるのかを考えて応用させるヒントにしてほしい。
具体的には、前半で「スペースキーを押すと無数にCubeが空から降ってくる」サンプルを作り、後半は「動的に作成されたCubeを3Dキャラクターが蹴る」というゲームらしきものを作る。「単なる、複数のオブジェクトや物理法則のシミュレーションが、どうやってゲーム性を帯びるか」が分かるはずだ。
オブジェクトを自動的に生成する処理は、実際にゲームを作成する場合に必要とされるだろう。複数のオブジェクトを作成するのに1個1個オブジェクトを配置していったのでは日が暮れてしまうためだ。そこで、スクリプトによって自動的にオブジェクトを作成する処理を解説する。
Rigidbodyとは「剛体」という意味で、物理学/力学で用いられる用語の1つだ。Rigidbodyを使うことで、オブジェクトに“重力”を与えたり、物理的な力をオブジェクトに与えて動かしたり、回転させたりすることができる。
Unityは3DでリアリティーがあるゲームやVR/ARコンテンツをできるだけ簡単に作るために、さまざまな機能が用意してある。これまでの連載で紹介した、MecanimやParticle Systemなどと同様、Rigidbodyもその1つだ。
連載第10回で、爆発によって複数のCubeが飛び散るアニメーションを実現させるために少しだけ紹介したが、今回はもう少しだけ詳細な使い方を紹介する。Particle System同様、ぜひVRに対応させてVRで体験してみてもらいたい。環境さえそろえば、それほど難しいことはない。連載「Unityで始めるVR/AR開発入門」が参考になるはずだ。
まずはプロジェクトの作成から入ろう。Unityを起動し、「NEW」から新しいプロジェクトを作成する。今回は「MakingDynamicCube」とした。
「Create project」ボタンをクリックすると、「MakingDynamicCube」のプロジェクトのScene画面が表示される。この画面内でサンプルを作っていこう。
Hierarchyの「Create」→「3D Object」→「Cube」から「Cube」を選択すると、Scene画面内にCubeが作成される。Inspector内の「Transform」→「Scale」の値を全て「1.5」に指定して少し大きめのCubeを作成する(図1)。
Cubeに色を付けるには、Projectの「Create」→「Material」を選択する。すると「Assets」の中に「New Material」というグレーの球が作成される。この「New Material」という名前を「RedColor」に変更する。
Inspector内の「Main Maps」項目の中にある「Albedo」の白い欄が表示されているので、この欄をクリックする。「Color」を選択するダイアログボックスが表示されるので、赤色を選択する。すると、「Assets」内のグレーの球も赤色に変化する(図2)。
図2の「Assets」内の「RedColor」をScene内のCubeにドラッグ&ドロップする。するとCubeが赤色に変化する(図3)。
赤色に変化したCubeを選択し、Inspector内の一番下に表示される「Add Component」から「Physics」→「Rigidbody」と選択する。すると、CubeにRigidbodyが追加される。「スペース」キー押してCubeを下に落下させるには、この「Rigidbody」を追加する必要がある(図4)。
次にHierarchy内のCubeをProjectの「Assets」フォルダ内にドラッグ&ドロップする。必ずHierarchy内のCubeで行う。Scene内のCubeを「Assets」フォルダ内にドラッグ&ドロップしようとしてもできないので、注意してほしい(図5)。
「Assets」フォルダ内にオブジェクトをドラッグ&ドロップすることを「Prefab」(プレハブ)化するという。プレハブ化しておくと、そのオブジェクトが再利用可能になる。プレハブは複数のシーンにも、また1つのシーンにも複数追加できる。
Copyright © ITmedia, Inc. All Rights Reserved.