02 シーンとGameObject・コンポーネント - ruccho/first-step-to-unity GitHub Wiki
さて、基本操作が確認できたところで、実際にゲームを作っていく工程に入ります。今回のチュートリアルでは、弾転がしゲームを作ろうと思います。
ここでメニューからFile > Saveを選択し、今の作業内容を保存しておきます。
次にFile > New Sceneを押します。
Basic (Built-in) を選択してCreate
を押します。
画面からカプセルが消え、もとのまっさらな状態に戻りました。
さきほどまでの作業内容はどこに行ったのでしょう?
Projectウィンドウを開き、Assets/Scenesフォルダを見てましょう。
SampleScene.unityというファイルがあります。さきほど配置したカプセルなどはこの中に保存されています。
Unityでは、配置したオブジェクトはScene
という概念で管理され、ファイルに保存されます。Sceneは複数作成することができ、必要に応じて切り替ることができます。
たとえば、ゲームのタイトル画面、メイン画面、リザルト画面をそれぞれシーンとして作成し、ゲームの進行に合わせ切り替える、といった使い方をするわけです。
では、いま新規に作成したシーンを保存しておきましょう。
メニューから File > Save As... で、Assets/Scenes内Main.unity
という名前で保存しておきます。Assets
以下の階層であれば他の場所に保存することもできます。
Projectウィンドウを確認すると、MainとSampleSceneのふたつができています。それぞれダブルクリックして開くと編集することができます。
それではMainシーンに戻って、玉転がしのステージを作っていきましょう。
Hierarchyから + > 2D Object > Planeを選択します。
平面があらわれました。
ちょっと中途半端な位置に出現してしまったので、位置を調整します。HierarchyでPlaneが選択された状態にして、Inspectorを見てみます。
このように、オブジェクトを選択状態にすると、Inspectorで詳細な情報を確認・編集することができます。 なにやらいろいろ表示されていますね……
ひとまず見るべきは「Transform」と書かれたセクションです。 ここにはオブジェクトの位置や回転、大きさなどを設定するところです。
Positionの欄がキモい小数になっているので、ぜんぶ0にして原点に移動させてしまいます。
ちょっと変化が分かりにくいですが、これでOKです。Planeが原点に移動しました。
玉を転がすための平面ができたので、こんどは玉を配置します。
さきほどと同様にHierarchyから + > 3D Object > Sphere を選択します。
こちらもほどよい場所に配置しておきます。
最低限玉と平面が配置できました。
ここで、一度Playしてみましょう。
良い感じに画角に映っていますが……玉が落ちませんね。
実は、Sphereを置いただけでは玉は物理的な振る舞いをしません。この玉に物理演算用のコンポーネントを取り付ける必要があります。
なんのこっちゃですが、ひとまずやってみましょう。Sphereを選択状態にしてInspectorを見ます。
ウィンドウ下部のAdd Component
を押して、Rigidbodyコンポーネントを追加します。
SphereのInspectorにRidigbodyと書かれたセクションが増えました。これでOKです。
では、もういちどPlayしてみます。
Sphereが落下して、Planeに落ちるようになりました!わかりにくければ、いろいろ高さを変えて試してみましょう。
今やったように、Unityではオブジェクトにコンポーネントを取り付けることによって、オブジェクトの振る舞いを決定します。
Rigidbody
は「剛体」、すなわち落下したり、衝突したりといった物理的な物体の基本的な性質を実現するためのコンポーネントです。
また、UnityではSphereやPlane、CameraやDirectional Lightなどのシーン上に配置されたオブジェクトのことをGameObjectと呼びます。Unityではシーン上に存在する物体はすべてGameObjectであり、そこに複数のコンポーネントが取り付けられていきます。
Inspectorを見てみると、Rigidbodyのほかにもいろいろなコンポーネントがつけられていることが分かると思います。Sphereの例では、4つのコンポーネントがあらかじめ取り付けられています。
- Transform
- 位置・姿勢・大きさをコントロールするコンポーネント
- Sphere (Mesh Filter)
- 3Dモデルを取得するためのコンポーネント
- Mesh Renderer
- 3Dモデルを描画するためのコンポーネント
- Sphere Collider
- 球体の当たり判定を設定するコンポーネント
ほかにも、Main CameraであればCameraコンポーネント、Directional LightであればLightコンポーネントが取り付けられています。
試しに、Cameraコンポーネントのチェックを外した状態でゲームをPlayしてみましょう。
Gameビューに「Display 1 1No cameras rendering」と表示され、真っ暗な画面になってしまいました。 Main CameraはCameraコンポーネントによって画面を描画していたのでした。
このように、SphereもPlaneもMain CameraもDirectional Lightも、プレーンなGameObjectに対してコンポーネントが設定されることでそれぞれの性質を持っていることがわかります。もしこれらのコンポーネントを取り外してしまえば、SphereもCameraも同じです。
さきほどはHierarchyのメニューからPlaneやSphereを作成しましたが、あれはあらかじめコンポーネントが取り付けられた状態のGameObjectを作成する機能だったわけです。