「Unityの物理特性」 オブジェクトに”Rigidbody” “Collider” を使い動作確認

Objects
Unity初心者がUnityを一日でも早く覚えるために色々と試行錯誤してみました。主にオブジェクトに効果をつけるためのコンポーネントのお話しです。

SPONSORED LINK

photo by Reuben Whitehouse

▼この記事の目次

  1. 「オブジェクト作成」&「マテリアル」
  2. Rigidbody / リジットボディ
  3. Collider / コライダー
  4. 「プリミティブオブジェクト」&「デフォルトのコライダー」
  5. 「検証」色々と動作確認

「オブジェクト作成」&「マテリアル」

土台となる床を作ります。「Hierarchy/Create」→「3D Object」→「Plane」を選択。今回は動作を確認したいという目的なので適当な広さにします。

collider

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

collider2

ゲームオブジェクトは設定するだけではモノトーンの世界です。これに色を付けたり、模様を入れたりオブジェクトの表面上の効果を付ける役目になる部分がマテリアルです。また大事な要素にShaderなるものがありますが、こちらは別の回にて追い追いとやっていきましょう。

Shaderまでではなくても簡単に表面の効果を付けたければMaterialの「Metallic」(金属) や「Smoothness」(滑らかさ) で調節できます。

【英単語の意味】
  • Material/マテリアル = 生地、素材
  • Shader/シェーダー = 3D用語でコントラスト、立体感を与える処理 (Shading) を行うプログラムの事

プレイヤー (ボール) の作成

次はボールを作成してみましょう。「Hierarchy/Create」→「3D Object」→「Sphere」 オブジェクトが落下する時の物理的な処理を見たいのでボールを上に移動させます。
collider3
しかしこのままだとオブジェクトを配置したというだけなのでボールは下に落下するという物理的な動作をしません。無重力状態でボールは宙に浮いたままです。ボールというオブジェクトにコンポーネントを追加する必要があります。

Rigidbody / リジットボディ

ボールが落ちるという物理的な動作を実現させるにはRigidbodyというコンポーネントを使います。こちらはオブジェクトに重力を加えての落下、回転などの動作機能を追加する事ができます。

プレイヤーを選択している状態で「Component」→「Physic」→「Rigidbody」と選択します。

▼Play Modeから「再生」する
collider5

collider4

【!】ワンポイント
ここで気づいたのが「再生」したままの状態だと自動的に再生処理が終了しないという事。「再生」したままの状態で編集を行うとPlay Modeの処理を終了した場合にその編集が無効になってしまいます。スクリプトも反映されないようです。
ここでコンポーネント「Rigidbody」の詳細をみてみましょう。

  • 「Mass」… オブジェクトの重さ (単位… Kg)
  • 「Drag」… オブジェクトにかかる空気抵抗
  • 「Angular Drag」… オブジェクトにかかる空気抵抗 (回転時)
  • 「Use Gravity」… オブジェクトが重力の影響を受ける
  • 「Is Kinematic」… Rigidbody処理が適用されないがスクリプトは適用される
  • 「Interpolate」… Rigidbodyの動きがぎこちないときに修正するためのもの
  • 「Collision Detection」… 高速動作のオブジェクトが衝突を検知しない場合のための機能
  • 「Constraints」… Rigidbodyに対しての制限を座標によって行う

ちょっと実験・・

5つのボールを作って並べそれぞれ違う値の「Mass」を入れてみました。これだけ変わるという絵を見たかったのですが変わらずという結果に。100を入れても変わりませんどこの設定が違うのやら。
collider6

ここはスクリプトで操作した方がいいのでしょうか? とりあえずは謎なので置いておきます。設定を変えてしまったとか新規のプロジェクトで試したら解決する問題かもしれません。

【英単語の意味】
  • Physic/フィジックス = 物理特性、物理学
  • Rigidbody/リジッドボディ = 剛体
  • Mass/マス = 集合体

Collider / コライダー

オブジェクトの衝突に関してのコンポーネント機能となるのがコライダーです。Unityのオブジェクト同士の物理的な動作はリジッドボディ (重力) とこのコライダー (衝突) の組み合わせによって作られます。

オブジェクトにはコライダーを付けない事も出来ますし、一つのオブジェクトに複数のコライダーを付ける事が出来ます。

▼こちらをご覧下さい。コライダーによる機能を無効にした場合の結果です。

collider11

いわゆる当たり判定をするのに利用するための機能がコライダーです。落ちるオブジェクトに受け止めるオブジェクト+コライダーを設定していない状態だとオブジェクトが重力に吸い込まれるように落ちてしまいます。

上画像のボールのようにRigidbodyによる動作機能を加えたコライダーをRigidbodyコライダー、下画像の床のようにRididbodyコライダーによる動作を受け止めるのが静的コライダーです。静的コライダーはRididbodyコライダーによる衝撃を受けてもオブジェクトが動く事はありません。

▼ボール「Rididbodyコライダー」 + 床「静的コライダー」による動作処理
collider14

「コライダー | Unityマニュアル」にはRididbodyコライダーと書いてありましたがUnity開発者は通常そう呼ばないかもしれません。なんだか長いし面倒ですからね。

○プリミティブなコライダー

Unityにはプリミティブオブジェクトというものが用意されています。基本的な形をしているオブジェクトの事です。

それ以外にもプリミティブなコライダーというものがありますが、まずはプリティブオブジェクトがどういったものなのか見てみましょう。説明より画像を見た方がわかりやすいのでそれでいきます。

3D Object / プリミティブオブジェクト一覧

Cube/キューブ
collider7

Sphere/スフィア
collider8

Capusle/カプセル
collider9

Cylinder/シリンダー
collider10

Plane/プレイン
collider13

Quad/クアッド
collider12

上にいくつか表示されている画像がプリティブオブジェクトです。これらのオブジェクトを配置してゲームを構成するのです。では、CubeからCylinderまでは単にそのような形をしているオブジェクトになりますがPlane、そしてQuadとはどのように使うものなのでしょう?

Planeは英単語の意味としてはこの場合飛行機ではなく平面という意味になります。平面なので床や壁を作るのに使えます。今回床として使った部分がPlaneです。

そしてQuadは文字や動画を入れるものらしいです。使ったわけではないのでよくわかりませんが、ゲームの中のちょっとしたメッセージやテレビ画面とかに使うのでしょうか。

「プリミティブオブジェクト」&「デフォルトのコライダー」

プリティブオブジェクトにはデフォルトで一つのコライダーがセットになっています。このままこのコライダーを使用するのもいいですが、もちろんコライダーの変更や追加する事もできます。
どのような感じなのか一つずつ見ていきましょう。

○「Cube」→「Box Collider/ボックスコライダー」… 立方体の形のコーライダー

collider15

緑色の部分がコライダーです。

Box Colliderの設定

  • 「Is Trigger」… 有効にすると物理的に衝突せずオブジェクトはオブジェクトをすり抜ける
  • 「Material」… Physic Materialを使用する場合に設定 ※
  • 「Center」… 座標によるコライダーの位置
  • 「Size」… コライダーのサイズ変更
  • 「Edit Collider」… シーンビューからコライダーサイズの変更ができる
【Physic Material / フィジックスマテリアル ※】

ここで少し解説入ります。記事のはじめにAssetsのMaterial (マテリアル) という言葉が出てきました。この単にMaterialという言葉が指すのは主にオブジェクトに色を付けたり効果を付けたりと表面上に効果を表す素材でした。

しかしPhysic Materialの方はMaterialとは違います。英語の意味から捉えてみると物理特性の素材、つまりは物理的な素材です。

Material (素材) はオブジェクトに対しての外見的な素材でした。Physic MaterialはそこにPhysic (物理) がプラスされてオブジェクトの摩擦係数を機能させる素材です。

「Sphere」→「Sphere Collider/スフィアコライダー」… 球体のコーライダー

collider16

Sphere Colliderの設定

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

「Capsule」→「Capsule Collider/カプセルコライダー」… カプセル型のコーライダー

collider17

Capsule Colliderの設定

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

このカプセルコライダーが外と違うのはDirection部分です。これはコライダーの方向です。「Direction = 方向」・「Axis = 軸」

▼これに当てはまる用途があるのかはわかりませんが・・
collider18

「Cylinder」→「Capsule Collider/カプセルコライダー」… カプセル型のコライダー

collider19

Cylinderの場合はCapsuleと同じコライダーのようです。次いってみましょう。

「Plane」→「Mesh Collider / メッシュコライダー」… メッシュのコライダー

collider24
Mesh Colliderの設定

  • 「Convex」… Mesh Collider同士の衝突に対して
  • 「Is Trigger」… 有効にすると物理的に衝突せずオブジェクトはオブジェクトをすり抜ける
  • 「Material」… Physic Materialを使用する場合に設定
  • 「Center」… 座標によるコライダーの位置
  • 「Mesh」… 使用するメッシュの設定

メッシュとは3Dを構成するのに大事な要素です。三角形の集まりでできています。UnityではUVというものがこのメッシュに関係しているようですが、詳しくは別の機会に紹介する事にします。

【英単語の意味】
  • Collider (コライダー) = 衝突型加速装置
  • Convex (コンヴェックス) = 凸 (とつ) 面の
  • Trigger (トリガー) = きっかけを与えるもの、引き金
  • Radius (ラディウス) = 半径、半径範囲

「検証」色々と動作確認

「その1」Mesh Collider Convexを有効にする

Mesh ColliderのConvex設定を無効/有効にした場合の動作を確認してみました。
collider20

「その2」コライダーはオブジェクトの形に合ってなくても良い

▼もちろんこうなります。

collider21

「その3」リジッドボディ+コライダー+スクリプト

▼Unityちゃんを操作

collider22

あまり凝ったスクリプトではないので左右のみの操作による動作です。人物オブジェクトに対してのコライダーがよくわからなく適当なので少し宙に浮いていて結構雑です。

imageLicenseLogo
この作品はユニティちゃんライセンス条項の元に提供されています

関連記事




この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitterでめちゃログをフォローしよう!