Unity 初心者がつまずいたこと 3D編

2017.06.12

前回に引き続き、Unityの実装でつまずいた点をご紹介します。
今回は3Dに関することです。

GameObjectとは一体何なのか

こちらに関しては公式のマニュアルに書いてある通りでした。

https://docs.unity3d.com/ja/540/Manual/GameObjects.html

兎にも角にもシーンに配置されたものはすべてGameObjectとなりますので、最初は、シーンに置いたものに関してはすべて、「あれもこれもGameObjectなんだな」という理解があれば良いかと思います。

Componentとは一体何なのか

公式のマニュアルによると
「オブジェクトやゲームでの振る舞いに関する心臓部」
とのことなのですが、こちらも最初はよく分からないまま進めていました。

色々やってみた結果、

  • GameObjectはただのオブジェクト
  • ComponentはGameObjectに何かをさせるためのもので、Transform、Rigidbody、Scriptなど、様々なものがこれに該当する

という理解にたどり着きました。

下記の赤枠はすべてComponentです。

cap
インスペクターウィンドウに表示されているものは選択中のGameObjectにアタッチされたComponentで、「GetComponent<>();」によって値の取得や変更が可能、
と思っておいて良いかと思います。

3Dデータを取り込んだら画像の表示がおかしい

3Dのキャラクターデータを取り込んだところ、下記のような現象が起こっていました。

cap2
口が黒い

口部分のmaterialは透過pngだったため、
Rendering Modeを「Fade」にしたところ、ちゃんと透過部分が反映されました。

cap3

iTweenでジャンプができない

iTweenという、アニメーションをさせるための有名なAssetがあります。
大変便利なもので、至る箇所で使用していたのですが、キャラクターをジャンプさせようとy軸の座標移動アニメーションの指定したところ、まったく上に動いてくれないという現象が起こりました。
原因は、キャラクターのRigidbodyの「Use Gravity」にチェックが入っていたことでした。

cap5

「Use Gravity」や重力に関しては下記の記事を参考にさせていただきました。
http://ftvoid.com/blog/post/737
Physics.gravityという加速度が常にかかっているため、上に動かなくなっていました。

「Use Gravity」のチェックを外せばiTweenによるジャンプが可能にるということは分かりましたが、せっかく便利なUnityを使っているのだから、その機能を使う方向性で対応しました。

このように、Rigidbodyのvelocityに力を加えることでキャラクターをジャンプさせました。
Use Gravityのチェックを外して無理やり移動させるより、とても自然にジャンプしてくれます。

どのカメラを使うか

最初はカメラに関することでも戸惑いました。
「あるごん」はゲーム画面に3Dを採用していますが、こちらのカメラは「orthographicカメラ」と呼ばれるものです。
https://docs.unity3d.com/ja/540/Manual/CamerasOverview.html

いかにも3Dっぽいリアルなパースペクティブを表現できるカメラはPerspectiveカメラ、
奥行によって物のサイズが変わらないのがOrthographicカメラです。
最初は何も考えずに、いかにも3DらしいPerspectiveのカメラにしていたのですが、
Perspectiveのカメラにすると、極端な話、こういうことになります。

cap6

「あるごん」はブロック上にキャラクターを配置していくゲームです。
子供をターゲットとしているため、奥にいくほど小さくなってしまうと
子供には使いにくいのではないか、という話になり、最終的にはOrthographicのカメラを採用しました。

cap7
奥行によってブロックのサイズが変わらないのでキャラクターを配置しやすい

まとめ

Unityは設定できる項目が多いが故に、各パラメータの変更の必要・不必要が分からず時間を食ってしまうということが多々ありました。
様々な概念に関しても、世の中にドキュメントはたくさんありますが、ひたすらUnityに触って慣れていくのが近道だと感じました。
もっと色々あったような気がするのですが、長くなってしまうので次回に回します。