【第1回】初めてのUnity! 最初は物体の自由落下をさせることから

【第1回】初めてのUnity! 最初は物体の自由落下をさせることから

Unityのインストールが終わった! Unity IDを作ってプロジェクトも作った!

……でも何したらいいか分からない!!

と、プロジェクト作成後の画面を開いたまま手が止まったあなたに向けて、超初歩的なチュートリアルをお送りします。

ここでやってみるのは、物体を自由落下させてみること。Unityの物理演算を使って、重力に引かれるまま落下していく物体を眺めてみましょ。

 

プロジェクトを作る

Unityを開き、新規プロジェクトを作ります。まだ何もしていないプロジェクトがあればそれを開くのでもOK。

ゲームを作る時も、メインのプロジェクトの他に実験用のプロジェクトを用意しておくと便利です。

シーンを作る

まずはシーン(Scene)を作ります。Unityにおけるシーンは、場面を管理するファイルで、場面の中に存在するキャラクター、物体や障害物、その場面を写すカメラなどが含まれています。

プロジェクト作成後
空のプロジェクトを作成した後

 

デフォルトでカメラと光源が含まれるシーンが作られているので、これを利用しましょう。画面上のメニューバーから[File] -> [Save Scene as…] を選択します。

シーンの保存
シーンを保存するのだポッター

 

プロジェクトフォルダ内のAssetフォルダが選択されているので、その中に [Scene] フォルダを作成し、シーンファイル名を [FreeFall] と入力して保存します。ファイル名は好きなように付けてください。あ、でも日本語で保存するのは非推奨。

シーンの保存
フォルダを作って保存

 

保存後、Unity画面内のProjectウィンドウにシーンファイルが表示されます。

シーンファイル
ファイルが保存された

 

なぜ最初にシーンを作ったかというと、ゲームを実行する単位がシーンごとのため。シーンがないとゲームを実行できないので、最初に保存しました。シーンの保存を忘れてUnityの画面を閉じたりなんかした日には大惨事に……。

物体を配置

さてさて、無事にシーンが保存されたので、次は落下する物体を配置しましょ。

今シーン内にあるのは『Main Camera』(カメラ)と『Directional Light』(光源)だけ。自由落下する物体を追加しないといけません。

物体を追加するには、Hierarchyウィンドウ内でコンテキストメニューを開くと楽ちんです。右クリックまたは二本指タップでメニューを開き、[3D Object] -> [Sphere] を選択。

球の追加
コンテキストメニューから追加すると楽

 

すると画面に球体が現れます。オブジェクトの名前は『Sphere』です。

球ができた
球ができた

 

さて、物体を配置できたので、一度ゲームを実行してみましょうか。画面上にある[▶︎(Play)]ボタンをクリックするとゲームを実行できます。

ゲームを実行する
ポチッとな

 

ゲームが実行されました。この時、最初に見ていた『Scene』画面ではなく『Game』画面になっていることに注目。『Game』画面では、実際にゲームが起動している時の画面が描画されます。ここにはカメラに写っているものが描画されるので、カメラの向き調整は大事。

ゲームの実行画面
おや? 球の様子が……何も変わらない

 

さて、球の様子は……うーん、見ていたけれど何も起きない。ただ球が浮いているだけになってます。

実はオブジェクトを配置しただけではまだUnityに物理演算をしてもらえないので、その設定を行う必要があります。

 

物理演算してもらえるようにする

物理演算をさせるために、Sphereオブジェクトに新しいコンポーネントをアタッチします。

コンポーネントはゲームオブジェクトにくっつける部品で、これによってゲームオブジェクトに様々な情報や動きを持たせることができます。

例えば、今作ったSphereを選択してInspetorウィンドウを見てみます。Inspector(インスペクター)ウィンドウはゲームオブジェクトの情報を表示してくれる強い味方です。サンキューインスペクター。直訳すると「監視員」なのでちょっとゴツいぜインスペクター。

インスペクターの内容
うわぁなんかいっぱい付いてる……

 

このInspectorウィンドウを見ると、『Transform』『Sphere(Mesh Filter)』『Sphere Collider』『Mesh Renderer』の4つのコンポーネントがくっついています。おぅふ。

『Transform』はUnityの世界におけるゲームオブジェクトの位置、回転、大きさの情報を持っています。どのゲームオブジェクトにも付いている、とても大事なコンポーネントです。

『Sphere(Mesh Filter)』『Mesh Renderer』の2つはメッシュ関係のコンポーネント。球の形を表現しているのですが、今回は深くは触れません。

『Sphere Collider』は物体同士の衝突に使われるコンポーネント。簡単に言うと当たり判定でしょうか。

このように、コンポーネントをゲームオブジェクトに付ける事で、様々な情報を持たせることができます。

さて、今回の目的に戻ると、この球オブジェクトを物理演算の対象にして欲しいのでした。

そのためのコンポーネント、もちろん用意されています!(ジャパネットたかた風に)

Sphereに新しく付けるコンポーネントは、その名も『Rigidbody』。直訳すれば「剛体」です。高校物理で聞いた懐かしワード。

ん? 高校物理? と、何かに気付いたあなたは鋭い。

物理ですよ、物理。そう、Rigidbodyでは物体の質量を設定したり、外部から力を受けた時の運動を制御してくれるんです。

自由落下といえば重力。今回使いたい重力の影響を計算してくれるのがこのRigidbodyコンポーネントなんです。

Rigidbodyのすごさが分かったところで、ゲームオブジェクトにくっつけてみましょう。Inspectorウィンドウの[Add Component] をクリックして、[Physics] -> [Rigidbody] と選択します。するとInspectorウィンドウにRigidbodyのコンポーネントが表示されました。

Add Component
Physicsを選択してからRigidbody

 

Rigidbodyのコンポーネント
できた!

 

コンポーネントを見てもらうと、重力の影響を受けるかどうかの設定である『Use Gravity』がデフォルトでTrueになっています。

なのでこのまま重力の影響を受けた動きを演算させることができちゃいます。

自由落下を眺める

Rigidbodyコンポーネントをアタッチしたので、『Game』タブに切り替えて再度ゲームを実行してみましょ。ポチッとな。

球の落下
ひゅーん

……おわかりいただけただろうか。

重力の影響を受けた球が落下していくのだ。

カメラに映っている範囲が狭いので、一度ゲームの実行を止め、カメラの位置をちょっと変更してみましょう。『Main Camera』を選択し、『Transform』のYを-10に、Zを-35にしましょうか。

カメラのTransform
カメラさんちょっとヒキでお願いしまーす

 

再びゲームを実行するとこんな感じ。重力加速度によって時間経過で加速している様子もなんとなく分かります。

自由落下の様子
自由落下させることができた

 

ゲームの実行中に『Sphere』を選択し、Transformコンポーネントを見ると、Y軸の値がもりもり減っていくのがわかります。Rigidbodyコンポーネントをアタッチしたことで、重力の影響を受けた位置情報を計算してくれるのです。便利。

まとめ

これで物体を配置し、物理演算によって自由落下させることができました。スクリプトを書かずに出来るって素晴らしい!(白目)

単純ではありますが、複雑なゲームもこうした物理演算の積み重ねで表現されていたりします。

さて、せっかくRigidbodyを扱ったので、次はもう少し物理っぽい動きを作ってみましょ。

アセット作ってます!

CTA-IMAGE

Unityでの開発に役立つアセットを作っています。

3DダンジョンRPGを開発するスピードを200%加速するAssetや、ファンタジーRPGのダンジョンを彩るパーツを取り揃えています。

特に3DダンジョンRPGのゲームを1から作るのは結構時間がかかります。ダンジョン部分の作成はこうしたアセットを使って、開発をブーストさせてみませんか?