連載
» 2017年02月06日 05時00分 UPDATE

ゲーム開発初心者のためのUnity入門(12):UnityでGameObjectのPrefab化、動的インスタンス生成&物理演算エンジンRigidbodyを使う基本 (1/6)

Unityで3Dゲームを作るまでのいろいろな処理を解説する連載。今回は、引数で指定したゲームオブジェクトのインスタンスを作成する「Instantiate」関数や、物理演算エンジンRigidbodyの基本的な使い方を解説する【Windows 10、Unity 5.4に対応。C#のコードを追加】。

[薬師寺国安,PROJECT KySS]

テクニックを覚えるだけではなく、それを使って何が作れるのかも考えよう

 Unityで3Dゲームを作るまでのいろいろな処理を解説する本連載「ゲーム開発初心者のためのUnity入門」。前回記事では、これまでの連載のおさらいも含めてAnimatorを一から作成する方法やキー入力でキャラ移動のスクリプトを設定する方法、カメラを追従させる方法など紹介した。

 今回は、サンプル作成を通じて、オブジェクトを自動的に生成する方法とUnityの物理演算エンジン「Rigidbody」を使いこなすための基本的な設定や関数について解説する。

 今回は少々長くなるが、テクニックを覚えて、それを使って何が作れるのかを考えて応用させるヒントにしてほしい。

 具体的には、前半で「スペースキーを押すと無数にCubeが空から降ってくる」サンプルを作り、後半は「動的に作成されたCubeを3Dキャラクターが蹴る」というゲームらしきものを作る。「単なる、複数のオブジェクトや物理法則のシミュレーションが、どうやってゲーム性を帯びるか」が分かるはずだ。

スクリプトで動的にインスタンスを生成する

 オブジェクトを自動的に生成する処理は、実際にゲームを作成する場合に必要とされるだろう。複数のオブジェクトを作成するのに1個1個オブジェクトを配置していったのでは日が暮れてしまうためだ。そこで、スクリプトによって自動的にオブジェクトを作成する処理を解説する。

Unityの物理演算エンジンRigidbodyとは

 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画面が表示される。この画面内でサンプルを作っていこう。

Cubeを配置し、色を付ける

 Hierarchyの「Create」→「3D Object」→「Cube」から「Cube」を選択すると、Scene画面内にCubeが作成される。Inspector内の「Transform」→「Scale」の値を全て「1.5」に指定して少し大きめのCubeを作成する(図1)。

図1 Cubeを作成した

 Cubeに色を付けるには、Projectの「Create」→「Material」を選択する。すると「Assets」の中に「New Material」というグレーの球が作成される。この「New Material」という名前を「RedColor」に変更する。

 Inspector内の「Main Maps」項目の中にある「Albedo」の白い欄が表示されているので、この欄をクリックする。「Color」を選択するダイアログボックスが表示されるので、赤色を選択する。すると、「Assets」内のグレーの球も赤色に変化する(図2)。

図2 赤色を選択し球が赤色に変化した

 図2の「Assets」内の「RedColor」をScene内のCubeにドラッグ&ドロップする。するとCubeが赤色に変化する(図3)。

図3  Scene画面とGame画面のCubeが赤色に変わった

「Rigidbody」でオブジェクトに重力を与える

 赤色に変化したCubeを選択し、Inspector内の一番下に表示される「Add Component」から「Physics」→「Rigidbody」と選択する。すると、CubeにRigidbodyが追加される。「スペース」キー押してCubeを下に落下させるには、この「Rigidbody」を追加する必要がある(図4)。

図4 CubeにRigidbodyを追加した

オブジェクトを「Prefab」化

 次にHierarchy内のCubeをProjectの「Assets」フォルダ内にドラッグ&ドロップする。必ずHierarchy内のCubeで行う。Scene内のCubeを「Assets」フォルダ内にドラッグ&ドロップしようとしてもできないので、注意してほしい(図5)。

図5 Hierarchy内のCubeを「Assets」フォルダ内にドラッグ&ドロップした

 「Assets」フォルダ内にオブジェクトをドラッグ&ドロップすることを「Prefab」(プレハブ)化するという。プレハブ化しておくと、そのオブジェクトが再利用可能になる。プレハブは複数のシーンにも、また1つのシーンにも複数追加できる。

       1|2|3|4|5|6 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。