Unity初心者がUnityを一日でも早く覚えるために色々と試行錯誤してみました。主にオブジェクトに効果をつけるためのコンポーネントのお話しです。
photo by Reuben Whitehouse
「オブジェクト作成」&「マテリアル」
まずは土台となる床を作ります。「Hierarchy/Create」→「3D Object」→「Plane」を選択。
今回は動作を確認する、という目的なので適当な広さにします。

床といってもこのままでは少し寂しい感じなので、色をつけてあげます。上メニュー「Assets」から→「Create」→「Material」を選択。Inspectorから編集します。

ゲームオブジェクトは設定するだけではモノトーンの世界です。
これに色を付けたり、模様を入れたりオブジェクトの表面上の効果を付ける役目になる部分がマテリアルです。また大事な要素にShaderなるものがありますが、こちらは別の回にて追い追いとやっていきましょう。
Shaderまでではなくても簡単に表面の効果を付けたければMaterialの「Metallic」(金属) や「Smoothness」(滑らかさ) で調節できます。
プレイヤー (ボール) の作成
次はボールを作成してみましょう。「Hierarchy/Create」→「3D Object」→「Sphere」 オブジェクトが落下する時の物理的な処理を見たいのでボールを上に移動させます。
しかしこのままだとオブジェクトを配置したというだけなのでボールは下に落下するという物理的な動作をしません。無重力状態でボールは宙に浮いたままです。ボールというオブジェクトにコンポーネントを追加する必要があります。
Rigidbody / リジットボディ
ボールが落ちるという物理的な動作を実現させるにはRigidbodyというコンポーネントを使います。こちらはオブジェクトに重力を加えての落下、回転などの動作機能を追加する事ができます。
プレイヤーを選択している状態で「Component」→「Physic」→「Rigidbody」と選択します。
▼Play Modeから「再生」する

【!】ワンポイント
ここで気づいたのが「再生」したままの状態だと自動的に再生処理が終了しないという事。「再生」したままの状態で編集を行うとPlay Modeの処理を終了した場合にその編集が無効になってしまいます。スクリプトも反映されないようです。
ここでコンポーネント「Rigidbody」の詳細をみてみましょう。
- 「Mass」… オブジェクトの重さ (単位… Kg)
- 「Drag」… オブジェクトにかかる空気抵抗
- 「Angular Drag」… オブジェクトにかかる空気抵抗 (回転時)
- 「Use Gravity」… オブジェクトが重力の影響を受ける
- 「Is Kinematic」… Rigidbody処理が適用されないがスクリプトは適用される
- 「Interpolate」… Rigidbodyの動きがぎこちないときに修正するためのもの
- 「Collision Detection」… 高速動作のオブジェクトが衝突を検知しない場合のための機能
- 「Constraints」… Rigidbodyに対しての制限を座標によって行う
ちょっと実験・・
5つのボールを作って並べそれぞれ違う値の「Mass」を入れてみました。これだけ変わるという絵を見たかったのですが変わらずという結果に。100を入れても変わりませんどこの設定が違うのやら。
ここはスクリプトで操作した方がいいのでしょうか? とりあえずは謎なので置いておきます。設定を変えてしまったとか新規のプロジェクトで試したら解決する問題かもしれません。
Collider / コライダー
オブジェクトの衝突に関してのコンポーネント機能となるのがコライダーです。Unityのオブジェクト同士の物理的な動作はリジッドボディ (重力) とこのコライダー (衝突) の組み合わせによって作られます。
オブジェクトにはコライダーを付けない事も出来ますし、一つのオブジェクトに複数のコライダーを付ける事が出来ます。
▼こちらをご覧下さい。コライダーによる機能を無効にした場合の結果です。

いわゆる当たり判定をするのに利用するための機能がコライダーです。落ちるオブジェクトに受け止めるオブジェクト+コライダーを設定していない状態だとオブジェクトが重力に吸い込まれるように落ちてしまいます。
上画像のボールのようにRigidbodyによる動作機能を加えたコライダーをRigidbodyコライダー、下画像の床のようにRididbodyコライダーによる動作を受け止めるのが静的コライダーです。静的コライダーはRididbodyコライダーによる衝撃を受けてもオブジェクトが動く事はありません。
▼ボール「Rididbodyコライダー」 + 床「静的コライダー」による動作処理
「コライダー | Unityマニュアル」にはRididbodyコライダーと書いてありましたがUnity開発者は通常そう呼ばないかもしれません。なんだか長いし面倒ですからね。
○プリミティブなコライダー
Unityにはプリミティブオブジェクトというものが用意されています。基本的な形をしているオブジェクトの事です。
それ以外にもプリミティブなコライダーというものがありますが、まずはプリティブオブジェクトがどういったものなのか見てみましょう。説明より画像を見た方がわかりやすいのでそれでいきます。
3D Object / プリミティブオブジェクト一覧
Cube/キューブ
Sphere/スフィア
Capusle/カプセル
Cylinder/シリンダー
Plane/プレイン
Quad/クアッド
上にいくつか表示されている画像がプリティブオブジェクトです。これらのオブジェクトを配置してゲームを構成するのです。では、CubeからCylinderまでは単にそのような形をしているオブジェクトになりますがPlane、そしてQuadとはどのように使うものなのでしょう?
Planeは英単語の意味としてはこの場合飛行機ではなく平面という意味になります。平面なので床や壁を作るのに使えます。今回床として使った部分がPlaneです。
そしてQuadは文字や動画を入れるものらしいです。使ったわけではないのでよくわかりませんが、ゲームの中のちょっとしたメッセージやテレビ画面とかに使うのでしょうか。
「プリミティブオブジェクト」&「デフォルトのコライダー」
プリティブオブジェクトにはデフォルトで一つのコライダーがセットになっています。このままこのコライダーを使用するのもいいですが、もちろんコライダーの変更や追加する事もできます。
どのような感じなのか一つずつ見ていきましょう。
○「Cube」→「Box Collider/ボックスコライダー」… 立方体の形のコーライダー

緑色の部分がコライダーです。
Box Colliderの設定
- 「Is Trigger」… 有効にすると物理的に衝突せずオブジェクトはオブジェクトをすり抜ける
- 「Material」… Physic Materialを使用する場合に設定 ※
- 「Center」… 座標によるコライダーの位置
- 「Size」… コライダーのサイズ変更
- 「Edit Collider」… シーンビューからコライダーサイズの変更ができる
「Sphere」→「Sphere Collider/スフィアコライダー」… 球体のコーライダー

Sphere Colliderの設定
- 「Is Trigger」… 有効にすると物理的に衝突せずオブジェクトはオブジェクトをすり抜ける
- 「Material」… Physic Materialを使用する場合に設定
- 「Center」… 座標によるコライダーの位置
- 「Radius」… コライダーのサイズ変更 (半径範囲)
- 「Edit Collider」… シーンビューからコライダーサイズの変更ができる
「Capsule」→「Capsule Collider/カプセルコライダー」… カプセル型のコーライダー

Capsule Colliderの設定
- 「Is Trigger」… 有効にすると物理的に衝突せずオブジェクトはオブジェクトをすり抜ける
- 「Material」… Physic Materialを使用する場合に設定
- 「Center」… 座標によるコライダーの位置
- 「Radius」… コライダーのサイズ変更 (半径範囲)
- 「Height」… コライダーのサイズ変更 (高さ)
- 「Direction」… コライダーの方向
- 「Edit Collider」… シーンビューからコライダーサイズの変更ができる
このカプセルコライダーが外と違うのはDirection部分です。これはコライダーの方向です。「Direction = 方向」・「Axis = 軸」
▼これに当てはまる用途があるのかはわかりませんが・・
「Cylinder」→「Capsule Collider/カプセルコライダー」… カプセル型のコライダー

Cylinderの場合はCapsuleと同じコライダーのようです。次いってみましょう。
「Plane」→「Mesh Collider / メッシュコライダー」… メッシュのコライダー
Mesh Colliderの設定
- 「Convex」… Mesh Collider同士の衝突に対して
- 「Is Trigger」… 有効にすると物理的に衝突せずオブジェクトはオブジェクトをすり抜ける
- 「Material」… Physic Materialを使用する場合に設定
- 「Center」… 座標によるコライダーの位置
- 「Mesh」… 使用するメッシュの設定
メッシュとは3Dを構成するのに大事な要素です。三角形の集まりでできています。UnityではUVというものがこのメッシュに関係しているようですが、詳しくは別の機会に紹介する事にします。
「検証」色々と動作確認
「その1」Mesh Collider Convexを有効にする
Mesh ColliderのConvex設定を無効/有効にした場合の動作を確認してみました。
「その2」コライダーはオブジェクトの形に合ってなくても良い
▼もちろんこうなります。

「その3」リジッドボディ+コライダー+スクリプト
▼Unityちゃんを操作

あまり凝ったスクリプトではないので左右のみの操作による動作です。人物オブジェクトに対してのコライダーがよくわからなく適当なので少し宙に浮いていて結構雑です。
この作品はユニティちゃんライセンス条項の元に提供されています