メインコンテンツまでスキップ

コリジョンパラメータ

コリジョン(衝突判定)に関するパラメータです。

このページについて

ここはコリジョンパラメータの網羅的なリファレンスです。実際の設定手順や形状の選び方は コリジョン設定ガイド、複数メッシュ間での共有は 共有コリジョン を参照してください。

コリジョンタイプ​

KawaiiPhysicsでは以下の4種類のコリジョン形状をサポートしています。

タイプ説明
Spherical球体コリジョン
Capsuleカプセルコリジョン
Boxボックスコリジョン
Planar平面コリジョン

コリジョン形状の比較

各コリジョン形状の特徴と使用例

FCollisionLimitBase(共通プロパティ)​

すべてのコリジョンタイプに共通する基本プロパティです。

プロパティ型説明
DrivingBoneFBoneReferenceコリジョンを追従させるボーン
OffsetLocationFVectorボーンからのオフセット位置(デフォルト: ZeroVector)
OffsetRotationFRotatorボーンからのオフセット回転(デフォルト: ZeroRotator、範囲: -360 ~ 360)

FSphericalLimit(球体コリジョン)​

球形の衝突判定を追加します。

UPROPERTY(EditAnywhere, Category = "Limits")
TArray<FSphericalLimit> SphericalLimits;

プロパティ​

名前型デフォルト説明
Radiusfloat5.0球の半径(0以上)
LimitTypeESphericalLimitTypeOuter内側/外側の制限タイプ

ESphericalLimitType​

値説明
Inner球の内側に制限(ボーンを球の内側に押し込む)
Outer球の外側に制限(ボーンを球から押し出す)

Limit Typeの比較

Inner(内側制限)とOuter(外側制限)の違い

FCapsuleLimit(カプセルコリジョン)​

カプセル形状の衝突判定を追加します。

UPROPERTY(EditAnywhere, Category = "Limits")
TArray<FCapsuleLimit> CapsuleLimits;

プロパティ​

名前型デフォルト説明
Radiusfloat5.0カプセルの半径(0以上)
Lengthfloat10.0カプセルの長さ(0以上)

FTaperedCapsuleLimit(テーパードカプセル)​

未正式リリース

この機能はまだ正式リリースされていません。KawaiiPhysics v1.22でリリース予定です。開発中のため仕様が変更される場合があります。

FTaperedCapsuleLimit は両端で半径が異なるコリジョンです。Simple World Collisionの取り込みに加え、ノードの Collision > Tapered Capsule Collision、Limits DataAsset、PhysicsAsset由来の設定でも使えます。通常のCapsuleはv1.21以前からありますが、この端別半径の対応は追加機能です。

設定既定値意味
Radius05cm形状ローカル+Z端の半径
Radius15cm形状ローカル−Z端の半径
Length10cm端球の中心間距離。全長ではない

Driving Bone と位置・回転Offsetで配置します。Radius0=Radius1 なら等半径のカプセルとして扱えます。半径・長さは非負へクランプされ、Length <= abs(Radius0 - Radius1)(実装では微小許容差を加算)では小さい端球が包含されるため、大きい端球1つへ縮退します。衝突・編集表示・デバッグ表示はこの同じ条件を使います。

通常ケースの押し出し判定は軸線分上の最近点で半径を線形補間します。Chaosの形状との完全な接触一致は保証する説明ではないため、強いテーパーや細い部位では実際の接触を確認してください。Simple World Collisionへの変換ではQuery対応形状を使い、Cloth用のWidth/片面衝突属性は扱いません。Mirror Data Table for Collisionでは端点の意味に合わせて半径が必要に応じて交換されます。

配置手順と図

FBoxLimit(ボックスコリジョン)​

ボックス形状の衝突判定を追加します。

UPROPERTY(EditAnywhere, Category = "Limits")
TArray<FBoxLimit> BoxLimits;

プロパティ​

名前型デフォルト説明
ExtentFVector(5.0, 5.0, 5.0)ボックスのエクステント(各軸の半分のサイズ)

FPlanarLimit(平面コリジョン)​

平面による衝突判定を追加します。

UPROPERTY(EditAnywhere, Category = "Limits")
TArray<FPlanarLimit> PlanarLimits;

プロパティ​

名前型デフォルト説明
PlaneFPlane(0, 0, 0, 0)平面の定義

Data Assetからの読み込み​

LimitsDataAsset​

コリジョン設定をData Assetから読み込むことができます。別のAnimNodeやAnimation Blueprintで設定を流用したい場合に推奨されます。

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Limits")
TObjectPtr<UKawaiiPhysicsLimitsDataAsset> LimitsDataAsset;

PhysicsAssetForLimits​

Physics Assetからコリジョン設定を読み込むこともできます。

UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Limits")
TObjectPtr<UPhysicsAsset> PhysicsAssetForLimits;

World Collision​

bAllowWorldCollision​

ワールドコリジョン - レベル上の各コリジョンとの判定を行うフラグ。

プロパティ値
型bool
デフォルトfalse
警告

有効にすると物理処理の負荷が大幅に上がります。

bIgnoreSelfComponent​

自己コリジョン無視 - WorldCollisionにて、SkeletalMeshComponentが持つコリジョン(PhysicsAsset)を無視するフラグ。

プロパティ値
型bool
デフォルトtrue
編集条件bAllowWorldCollision == true

IgnoreBones​

無視ボーン - WorldCollisionにて、SkeletalMeshComponentが持つコリジョン(PhysicsAsset)を無視する設定(ボーン指定)。

プロパティ値
型TArray<FBoneReference>
編集条件bIgnoreSelfComponent == false

IgnoreBoneNamePrefix​

無視ボーン名プリフィックス - WorldCollisionにて、SkeletalMeshComponentが持つコリジョン(PhysicsAsset)を無視する設定(ボーン名のプリフィックス指定)。

プロパティ値
型TArray<FName>
編集条件bIgnoreSelfComponent == false

bOverrideCollisionParams​

コリジョンパラメータオーバーライド - SkeletalMeshComponentが持つコリジョン設定ではなく、独自のコリジョン設定をWorldCollisionで使用する際に設定。

プロパティ値
型bool
デフォルトfalse

Shared Collision(共有コリジョン)​

複数の KawaiiPhysics ノードが、1つのコリジョン形状セットを共有するための設定です。同一 Actor/ChildActor ファミリー内の別メッシュ間でコリジョンを共有できます。詳しくは Shared Collision を参照してください。

bSharedCollisionSource​

コリジョンの公開 - このノードのコリジョンを同じActor/ChildActorファミリー内の KawaiiPhysics に共有します(Source として動作)。

プロパティ値
型bool
デフォルトfalse
カテゴリLimits|Shared Collision

bUseSharedCollision​

共有コリジョンの使用 - 同じファミリー内の Source ノードが公開したコリジョンを使用します(Target として動作)。Source とは排他です。

プロパティ値
型bool
デフォルトfalse
編集条件!bSharedCollisionSource
カテゴリLimits|Shared Collision

SharedCollisionGroupTag​

グループタグ - 共有コリジョンのグループを識別する GameplayTag。Source / Target 両方で同じタグを使用します。

プロパティ値
型FGameplayTag
編集条件bSharedCollisionSource &#124;&#124; bUseSharedCollision
カテゴリLimits|Shared Collision
ヒント

同じAnimGraph内で同一フレームのコリジョンを使うには、Source ノードを Target ノードより先に評価される位置へ配置してください。

コリジョンソースタイプ​

コリジョンの設定元を示す列挙型です。

UENUM()
enum class ECollisionSourceType : uint8
{
AnimNode, // AnimNodeで設定された値を使用
DataAsset, // DataAssetで設定された値を使用
PhysicsAsset, // PhysicsAssetで設定された値を使用
};
ヒント

Data Assetを使用することで、複数のAnimNodeやAnimation Blueprint間でコリジョン設定を共有できます。

詳しくは Data Assets を参照してください。

関連するUE公式ドキュメント​

  • Physics Asset Editor — Skeletal Meshに使うPhysicsAssetと形状編集の入口を確認できます。 (UE 5.8)