UnityでGameObjectのPrefab化、動的インスタンス生成&物理演算エンジンRigidbodyを使う基本:ゲーム開発初心者のためのUnity入門(12)(1/6 ページ)
Unityで3Dゲームを作るまでのいろいろな処理を解説する連載。今回は、引数で指定したゲームオブジェクトのインスタンスを作成する「Instantiate」関数や、物理演算エンジンRigidbodyの基本的な使い方を解説する【Windows 10、Unity 5.4に対応。C#のコードを追加】。
テクニックを覚えるだけではなく、それを使って何が作れるのかも考えよう
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)。
Cubeに色を付けるには、Projectの「Create」→「Material」を選択する。すると「Assets」の中に「New Material」というグレーの球が作成される。この「New Material」という名前を「RedColor」に変更する。
Inspector内の「Main Maps」項目の中にある「Albedo」の白い欄が表示されているので、この欄をクリックする。「Color」を選択するダイアログボックスが表示されるので、赤色を選択する。すると、「Assets」内のグレーの球も赤色に変化する(図2)。
図2の「Assets」内の「RedColor」をScene内のCubeにドラッグ&ドロップする。するとCubeが赤色に変化する(図3)。
「Rigidbody」でオブジェクトに重力を与える
赤色に変化したCubeを選択し、Inspector内の一番下に表示される「Add Component」から「Physics」→「Rigidbody」と選択する。すると、CubeにRigidbodyが追加される。「スペース」キー押してCubeを下に落下させるには、この「Rigidbody」を追加する必要がある(図4)。
オブジェクトを「Prefab」化
次にHierarchy内のCubeをProjectの「Assets」フォルダ内にドラッグ&ドロップする。必ずHierarchy内のCubeで行う。Scene内のCubeを「Assets」フォルダ内にドラッグ&ドロップしようとしてもできないので、注意してほしい(図5)。
「Assets」フォルダ内にオブジェクトをドラッグ&ドロップすることを「Prefab」(プレハブ)化するという。プレハブ化しておくと、そのオブジェクトが再利用可能になる。プレハブは複数のシーンにも、また1つのシーンにも複数追加できる。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Gear VRとは――UnityでAndroidアプリを開発するための環境構築
HMDの中でも比較的扱いやすいGear VRで体験できるVR/ARコンテンツをUnityで開発する方法を紹介する連載。初回は、Unityや、Androidアプリを開発するのに必要なAndroid Studioをインストールして、Gear VRコンテンツの開発環境を構築する。 - HoloLens用Unity 5のプロジェクトをUWPとして書き出しエミュレータで動かす
拡張現実(AR)用ヘッドマウントディスプレイ「HoloLens」のエミュレーターを使ってHoloLens用アプリの作り方を解説する本連載。今回は、HoloLens用Unity 5で簡単なUnityプロジェクトを作成し、それをUWPに書き出してHoloLens Emulatorに配置する方法について。 - UnityでWebカメラの画像をリアルタイムで複数テクスチャとして表示する&Kinectセンサーと連動させる
ゲーム開発環境Unity 5の「Personal Edition」では、Unity 4.6以前では有料だった機能が無料で使えるようになった。本連載では、Unity 5で無料になった機能の使い方について解説していく。初回はWebカメラと、「Kinect for Windows v2」を使ったサンプルを紹介する。