当たり判定とPhysics:ColliderとRigidbody【Unityスタートガイド3-4】

目次

この記事で学べること

  • Colliderで当たり判定を設定する方法
  • 各種Colliderの種類と使い分け
  • Rigidbodyで物理演算を追加する手順
  • TriggerとCollisionの違い
  • 実践的な物理挙動の作成

前提知識

Colliderで当たり判定を設定

Collider(コライダー)は、ゲームオブジェクトの当たり判定を定義するコンポーネントです。物理的な衝突や接触を検知するために不可欠です。

Colliderの役割

  • 当たり判定の定義: オブジェクトの「当たり範囲」を設定
  • 物理衝突の検知: 他のオブジェクトとの接触を感知
  • トリガー機能: イベント発生のための領域設定
  • 見えない壁: 視覚的に存在しないが物理的に存在する境界

自動的に付与されるCollider

基本的な3Dオブジェクトには適切なColliderが自動的に付与されます:

  • Cube: Box Collider
  • Sphere: Sphere Collider
  • Cylinder/Capsule: Capsule Collider
  • Plane/Quad:Mesh Collider

Colliderの種類と特徴

Unityには様々な形状のColliderが用意されています。それぞれの特徴を理解して適切に使い分けましょう。

Box Collider(箱型)

  • 特徴:直方体の当たり判定
  • 用途:壁、床、箱、建物などの直方体オブジェクト
  • 利点:計算が高速、編集が簡単

設定項目:

  • Size: 各軸方向のサイズ
  • Center: 中心位置のオフセット

Sphere Collider(球型)

  • 特徴:球体の当たり判定
  • 用途:ボール、惑星、丸いキャラクター
  • 利点:回転しても形状が変わらない

設定項目:

  • Radius: 球の半径
  • Center: 中心位置のオフセット

Capsule Collider(カプセル型)

  • 特徴:円柱の上端と下端が半球になった形状
  • 用途:キャラクター、柱、瓶などの縦長オブジェクト
  • 利点:回転や移動が滑らか

設定項目:

  • Radius: 半球の半径
  • Height: 全体の高さ
  • Direction: カプセルの向き(X/Y/Z軸)

Mesh Collider(メッシュ型)

  • 特徴:3Dモデルの形状に完全一致した当たり判定
  • 用途:複雑な形状のオブジェクト
  • 注意:計算負荷が高い
  • 注意:動くオブジェクト(Rigidbody付き)に使うときは、Mesh ColliderのConvexをオンにする

Rigidbodyで物理演算を追加

Rigidbody(リジッドボディ)は、オブジェクトに物理演算を適用するコンポーネントです。これにより重力、衝突、運動などの現実的な挙動が可能になります。

Rigidbodyの役割

  • 重力の適用: 地球のような重力でオブジェクトを落下
  • 運動のシミュレーション: 力やトルクによる運動
  • 衝突の処理: 他のオブジェクトとの物理的な相互作用
  • 安定した物理挙動: 現実的な跳ね返りや回転

Rigidbodyの追加方法

手順1: オブジェクトを選択

手順2: Add Component

InspectorウィンドウのAdd Component>Physics>Rigidbody

Rigidbodyの主な設定

  • Mass:質量(kg単位、重いほど動きにくい)
  • Linear Damping:移動の抵抗(大きいほど早く止まる。以前のバージョンではDrag)
  • Angular Damping:回転の抵抗(以前のバージョンではAngular Drag)
  • Use Gravity:重力を適用するか
  • Is Kinematic:物理演算で動かさず、スクリプトで動かすか

TriggerとCollisionの違い

ColliderにはTriggerモードとCollisionモードの2つの動作モードがあります。

Collisionモード(通常の当たり判定)

  • 物理衝突: オブジェクトがぶつかり合って跳ね返る
  • Is Trigger: オフ(デフォルト)
  • 用途: 壁、床、動くオブジェクト

Triggerモード(イベント判定)

  • すり抜け判定: 物理衝突せず、イベントのみ発生
  • Is Trigger: オン
  • 用途: ゴールエリア、センサー、アイテム取得範囲

実践例:Triggerの使用

手順1: Sphereを作成(Sphere Colliderは最初から付いています)

手順2: Is Triggerをオン

Triggerの注意点

  • Triggerに何かが入ったことをスクリプトで受け取るには、ぶつかる2つのうち、どちらかにRigidbodyが付いている必要があります
  • スクリプトで受け取る方法(OnTriggerEnterなど)は、第6章で説明します
スライム

床をTriggerにしたら、ボールがすり抜けて落ちていった・・・

フェアリー

Triggerは「ぶつからずに通り抜けて、入ったことだけ知らせる」モード!床や壁はIs Triggerをオフのままにしてね

実践:落下するボールを作る

物理演算の基本を実際に試してみましょう。

実践1: 基本的な落下ボール

手順1: Sphereを作成

Hierarchyで右クリック>3D Object>Sphere

手順2: Rigidbodyを追加

Add Component>Physics>Rigidbody

手順3: 再生してテスト

再生ボタン(▶)を押して、Sphereが落下すれば成功!

実践2: 跳ねるボール

手順1: 床を作成

Hierarchyで右クリック>3D Object>Plane(Position:0, 0, 0)

  • SphereはPosition Yを3にして、Planeより上に置いておく

手順2: Physics Materialを作成

Projectウィンドウで右クリック>Create>Physics Material(以前のバージョンではPhysic Material)

手順3: 跳ねる設定

  • Bounciness:1
  • Bounce Combine:Maximum

手順4: Materialを適用

SphereのSphere ColliderのMaterialに、作ったPhysics Materialをドラッグ

よくあるミスと対処法

ミス1: 落ちてほしいのに落ちない

原因:Colliderしか付いていない

Colliderだけのオブジェクトは「動かない壁や床」として働きます。ほかの物体を受け止めることは出来ますが、自分が重力で落ちたり、押されて動いたりはしません。

対処:Rigidbodyを追加する

ミス2: 床をすり抜けて落ち続ける

原因:Rigidbodyだけで、Colliderが付いていない(または床にColliderがない)

対処:落ちるオブジェクトと床の両方に、Colliderが付いているか確認する

ミス3: 見た目と当たり判定がずれている

原因:ColliderのCenterやSizeが、見た目と合っていない

ColliderはTransformのScaleに合わせて一緒に大きさが変わります。見た目とずれているときは、Collider自体の設定を確認しましょう。

対処:シーンビューで緑の線(当たり判定)を見ながら、ColliderのCenterとSizeを調整する

注意点やヒント

パフォーマンスについて

Colliderは計算負荷が高いため、必要最小限に:

  • Mesh Colliderは最後の手段
  • 複雑な形状は複数の単純Colliderで近似

Rigidbodyの最適化

  • Is Kinematic: スクリプトで制御する場合にオン
  • 質量のバランス: シーン内の全オブジェクトのMassを考慮
  • スリープ機能: 動きが止まったオブジェクトは自動的に計算を停止

Triggerの活用

Triggerは以下のように活用:

  • ゴール判定
  • アイテム取得
  • エリア検知(カメラ切り替えなど)

動かしてみて困ったとき

エラー1: 速いオブジェクトが壁をすり抜ける

  • 原因: 移動速度が速すぎる、Continuous Collision Detectionがオフ
  • 対処法: RigidbodyのCollision Detectionを「Continuous」に変更

エラー2: オブジェクトが振動する

  • 原因: 複数のColliderが干渉し合っている
  • 対処法: 不要なColliderを削除、またはConstraintsを設定

エラー3: 物理演算が不安定

  • 原因:オブジェクトの大きさが極端(とても小さい・とても大きい)、Massの差が極端
  • 対処法:大きさは1前後、Massは極端な差をつけないようにする。スクリプトで力を加える場合の注意は第6章で説明します

まとめ

当たり判定と物理演算のコンポーネントについて学びました:

  • Collider: オブジェクトの当たり判定を定義(Box/Sphere/Capsule/Mesh)
  • Rigidbody: 物理演算を適用(重力、衝突、運動)
  • Trigger vs Collision: イベント判定と物理衝突の違い
  • 実践: 落下ボールや跳ねるボールの作成
  • 注意点: ColliderとRigidbodyの適切な組み合わせ

2Dゲームでは、Rigidbody 2D・Box Collider 2Dのように「2D」が付いたコンポーネントを使います。3D用と2D用は混ぜて使えないので注意しましょう(4-4で説明します)。

これらのコンポーネントを組み合わせることで、現実的な物理挙動を持つゲームオブジェクトを作成できます。

次のステップ

物理演算の基本を理解したら、次はUnityでよく使用されるその他のコンポーネントについて学びましょう:

実際のゲーム制作では、スクリプトと組み合わせることでより細かい制御が出来るようになります(第6章で説明します)。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (1件)

コメントする

目次