8-3. コリジョン関係性の制御
コリジョン関係性の制御
前項でみたパーツのコリジョンパラメータの設定では、そのパーツの基本挙動を変更していました。状況によっては、特定のオブジェクト同士のみでコリジョンを検出したい(逆に特定の組み合わせのみで検出したくない)といったケースが出てきます。ここではその特定のオブジェクト同士でのコリジョンの関係性構築について見ていきます。
CollisionGroupによるコリジョンの分類
CollisionGroupを使うと、オブジェクトをグループに分類し、グループ間の衝突の有無を管理できます。これにより特定のグループ間でのみ衝突が発生する、といった設定をすることができます。Collision Groupは32個まで作成することが可能です。
実装方法
- Roblox Studio「Modelタブ」の「Collision Groups」メニューより、新しいグループを作成します。
- オブジェクトを選択し、プロパティから分類する「Collision Group」を設定します。
- Collision Groupsエディタで、各グループ間で衝突が発生するかどうかを設定します。
使用例
以下のように、プレイヤーの挙動からオブジェクトの挙動まで幅広い活用が可能です。
- プレイヤー同士が衝突しないようにする
- 特定のオブジェクトのみが通過できるエリアをつくる
- オブジェクト同士の物理挙動の干渉を避ける
NoCollision Constraintsの利用
NoCollision Constraintsを使用すると、特定のパーツ間でのコリジョンを無効にすることができます。固有なパーツ同士の衝突無効であれば直接パーツ同士で設定したほうがわかりやすく、また、Collision Groupには数の限度もあるため、固有パーツ同士の設定にはNoCollision Constraintsが有効となります。
実装方法
- オブジェクトを選択しRoblox Studio「Constraint」メニューより「NoCollision Constraint」作成します
- NoCollision Constraintのプロパティで、衝突を無効にするパーツを指定します
使用例
- モデル内の特定のパーツ同士の物理的な干渉をなくす
- 一部の装飾品同士が互いに衝突しないように設定する
キャラクター同士のコリジョンを無効にする実装例
多人数同時プレイが可能なRobloxエクスペリエンスでは、プレイヤー同士が衝突しないほうが都合が良いエクスペリエンスなどもあります。その場合はCollisionGroupを使った以下の実装でプレイヤーキャラクター同士が衝突しない設定が可能です(公式ドキュメントのサンプル)。
この例のようにScript上からCollisionGroupを制御することで、ゲームの状況に応じた動的な衝突の有効切替えが可能となります。