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

カスタム重力

重力方向をカスタマイズする方法を説明します。

基本的な重力設定

UPROPERTY()
FVector Gravity = FVector(0, 0, -1.0f);

デフォルトは下向き(-Z方向)の重力です。

重力方向の変更

ワールド座標系での指定

// 下向き(デフォルト)
Gravity = FVector(0, 0, -1.0f);

// 前方向
Gravity = FVector(1.0f, 0, 0);

// 斜め下
Gravity = FVector(0.5f, 0, -0.5f).GetSafeNormal();

キャラクター相対での指定

Blueprintで動的に設定:

// キャラクターの下方向を使用
FVector CharacterDown = -Character->GetActorUpVector();
KawaiiPhysicsNode->Gravity = CharacterDown;

使用例

壁歩きキャラクター

キャラクターが壁を歩く場合、重力方向を壁の法線に合わせます。

void UpdateGravity(FVector WallNormal)
{
// 壁の法線と逆方向を重力に
Gravity = -WallNormal;
}

宇宙空間

無重力環境:

Gravity = FVector::ZeroVector;

水中

浮力を表現:

// 上向きの浮力
Gravity = FVector(0, 0, 0.3f);

部位ごとの重力

異なる部位に異なる重力を適用するには、複数のKawaiiPhysicsノードを使用します。

AnimGraph
├── KawaiiPhysics (髪: 通常の重力)
│ Gravity = (0, 0, -1)

└── KawaiiPhysics (羽: 上向きの浮力)
Gravity = (0, 0, 0.2)

動的な重力変更

ゲームプレイ中に重力を変更できます。

// Blueprint呼び出し可能関数
UFUNCTION(BlueprintCallable)
void SetCustomGravity(FVector NewGravity)
{
KawaiiPhysicsNode->Gravity = NewGravity;
}

詳しくは ランタイム制御 を参照してください。