カスタム重力
重力方向をカスタマイズする方法を説明します。
基本的な重力設定
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;
}
詳しくは ランタイム制御 を参照してください。