シンプルなアクションゲームを作ってみよう5-RigidbodyとCapsuleColliderの取り付け-

記事内に広告が含まれています。

シンプルなアクションゲームを作ってみようの第5回です。

今回はゲームで使用するキャラクターにRigidbodyとCapsuleColliderを取り付けたいと思います。

前回はUnityエディターでの操作についてやりました。

シンプルなアクションゲームを作ってみよう4-Unityエディターの操作に慣れる-
Unityエディターでヒエラルキーでの操作やシーンビューでの操作に慣れる為に練習していきます。

シンプルなアクションゲームを作ってみようの他の記事は

シンプルなアクションゲームを作ってみよう

シンプルなアクションゲームを作るのを通してUnityの使い方を学ぶカテゴリです。

から参照出来ます。

スポンサーリンク

Rigidbodyとコライダについて

今回は前々回Stage1シーンに配置したキャラクターモデルにRigidbodyコンポーネントとCapsule Colliderを取り付けていきますが、このRigidbodyコンポーネントとCapsule Colliderはいったい何をするものなのでしょうか?

Capsule Colliderは衝突装置(衝突と判定する範囲)であるコライダの一つでカプセル型の形状のものです。

Rigidbodyはコライダが衝突した時に物理特性を使って制御する為の機能です。

キャラクターを移動させる時には、キャラクターが他のゲームオブジェクトと衝突しているかどうかを判定するコライダ、衝突した時にそれを制御するRigidbodyが必要になるという感じです。

今回の「シンプルなアクションゲームを作ってみよう」のカテゴリではRigidbody+CapsuleColliderを使ってキャラクターの移動をさせますが、CharacterControllerコンポーネントを使うことでも出来ます。

CharacterControllerを使ったキャラクターの移動処理はこのカテゴリ外の記事で記載しているのでそちらを参照してください。

RigidbodyとCapsuleColliderの取り付け

RigidbodyとCapsule Colliderが何かわかったので早速キャラクターモデルに取り付けてみましょう。

前々回作ったStage1シーンを開いてヒエラルキーでキャラクターモデルであるEthanを選択しインスペクタを見ます。

インスペクタの下にAdd Componentボタンがあるので、押します。

インスペクタのAdd Componentボタンを押してコンポーネントを追加する

出てきたメニューからPhysics→RigidbodyとPhysics→Capsule Colliderを選択して取り付けます(各々)。

RigidbodyとCapsule Colliderを取り付ける

以下のようにEthanのインスペクタでRigidbodyコンポーネントとCapsule Colliderが取り付けられたのを確認します。

EthanにRigidbodyとCapsuleColliderを取り付けた

RigidbodyとCapsule Colliderの設定をしていきます。

Rigidbodyの設定

RigidbodyのMassは質量でkg単位なのでEthanの場合は60ぐらいにしておきます。

Dragはゲームオブジェクトが力を受けた時の空気抵抗でこれは0にしておきます。

Angular Dragは回転に対する空気抵抗でこれは0.05にしておきます。

Use Gravityは重力を働かせるかどうかなのでチェックを入れておきます。

Is KinematicはTransformをスクリプトから直接変更して操作するかどうかなのでこれはチェックを外します。

Interpolateは補間(移動元から移動先の間)に関しての設定で

Noneは補間なし
Interpolateは前フレームのTransform情報に基づいてスムージングを行う
Extrapolateは次フレームのTransform情報を予測してスムージングを行う

となります。

ここではExtrapolateを設定します。

Collision Detectionは高速で移動するオブジェクトが他のオブジェクトをすり抜けてしまうのを防ぐための設定です。

Discreteは離散型衝突検知で一般的な設定です。
Continuousは動的なコライダ(Rigidbodyを持つ動くことを想定しているオブジェクト)には離散的、静的なコライダ(Rigidbodyを持たない動くことを想定していないオブジェクト)に対してはスイープに基づく連続的衝突検知を行います。
Continuous DynamicはContinuous、Continuous Dynamicを設定したゲームオブジェクトに対してスイープに基づく連続的な衝突検知を行います。静的なコライダにも連続的で、その他のコライダは離散的。
Continuous Speculativeは動的なコライダに投機的な連続衝突検知を行います。

基本的にはDiscreteで、すり抜け等の問題が出たら他の設定を試すと良いかもしれません。

今回の場合は高速でキャラクターを移動させないのでDiscreteを設定します。

Constraintsはリジッドボディの動きの制限をします。

Freeze Positionはリジッドボディに対する力によって位置を動かさない軸にチェックを入れます。
Freeze Rotationはリジッドボディに対する力によって回転をさせない軸にチェックを入れます。

今回の場合は人型キャラクターなので力によって回転をさせたくない為、Freeze RotationのXYZ全てにチェックを入れます。

位置はキャラクターを移動させる必要がある為、XYZの全てのチェックを外します。

これらの設定をしてRigidbodyコンポーネントは以下のようになりました。

シンプルアクションゲームのEthanのRigidbodyコンポーネントの設定

Capsule Colliderの設定

次はCapsule Colliderコンポーネントの設定をしていきます。

Is Triggerにチェックを入れると衝突ではなく検知範囲として使用出来ます。

今回の場合はキャラクターの衝突範囲として使うのでチェックはしません。

Materialはこのコライダが他のコライダと衝突した時の衝突設定マテリアルを設定することが出来ます。

キャラクターには特別設定しないのでここでは無視します。

Centerはコライダの中心位置の座標を設定します。

ここではXとZは0、Yに0.79を設定します。

Radiusはコライダの半径を設定します。

ここでは0.3を設定します。

Heightはコライダの高さを設定します。

ここでは1.6に設定します。

Directionはコライダの方向を設定します。

ここではY-Axisを設定します。

コライダの設定はシーンビューでEthanをフォーカスし、シーンビューのコライダのサイズを見ながらインスペクタのCapsule Colliderの値を設定するか、

シーンビューでコライダのサイズを見ながら設定値を探す

Capsule ColliderコンポーネントのEdit Colliderボタンを押して、

Capsule ColliderのEdit Colliderボタンを押す

シーンビューで□を直接ドラッグしてコライダのサイズを調整する方法があります。

Capsule ColliderのEdit Colliderを押してシーンビューで直接コライダのサイズを調整する

これらの設定をするとCapsule Colliderコンポーネントは以下のようになりました。

シンプルアクションゲームのEthanのCapsule Colliderコンポーネントの設定

Ethanを落下させてみよう

EthanにRigidbodyとCapsule Colliderを取り付けて設定をしました。

Rigidbodyの設定でUse Gravityにチェックを入れたのでゲームオブジェクトに重力が働くようになったのと、Capsule Colliderで他のゲームオブジェクトと衝突するようになりました。

そこでUnityエディターのプレイボタンを押して実行し、シーンビューでEthanをY軸の矢印を上向きにドラッグして離し、Ethanが落下して床に衝突するかを確認してみましょう。

Ethanが落下と衝突をするかどうか確認する

終わりに

今回はキャラクターモデルにRigidbodyコンポーネントとCapsule Colliderを取り付けて物理的に衝突出来るようにしました。

次回はスクリプトの作り方についてやります。

タイトルとURLをコピーしました