rework TengriMovementConfig

main
Nikolay Petrov 2026-01-07 00:52:30 +05:00
parent d89e3fb3b3
commit ea132ed92b
4 changed files with 86 additions and 21 deletions

View File

@ -5,20 +5,34 @@ import { TengriMovementConfig } from '/Source/TengriPlatformer/Movement/Core/Ten
export class DA_TengriMovementConfig extends TengriMovementConfig { export class DA_TengriMovementConfig extends TengriMovementConfig {
override MaxSpeed = 800.0; override MaxSpeed = 800.0;
override Acceleration = 2048.0; override Acceleration = 2048.0;
override Friction = 8.0; override Friction = 6.0;
override Gravity = 980.0;
override RotationSpeed = 360.0; override RotationSpeed = 360.0;
override MinSpeedForRotation = 10.0; override MinSpeedForRotation = 10.0;
override SteepSlopeSlideFactor = 0.0; override SteepSlopeSlideFactor = 0.0;
override CapsuleRadius = 34.0; override MaxJumpHeight = 1000.0;
override CapsuleHalfHeight = 88.0; override MinJumpHeight = 40;
override TimeToJumpApex = 0.5;
override CoyoteTime = 0.15;
override JumpBufferTime = 0.15;
override AirControl = 0.15;
override AirFriction = 0.1;
override FallingGravityScale = 1.5;
override TerminalVelocity = 2000;
override HeavyLandVelocityThreshold = -1000;
override MaxSlideIterations = 3; override MaxSlideIterations = 3;
override MaxStepHeight = 45.0; override MaxStepHeight = 45.0;
override GroundSnapDistance = 20.0; override GroundSnapDistance = 20.0;
override GroundSnapOffset = 0.15; override GroundSnapOffset = 0.15;
override PhysicsTickRate = 120;
override MaxAccumulatedTime = 0.1;
override bEnableInterpolation = true;
override WalkableAngleDeg = 50.0; override WalkableAngleDeg = 50.0;
override SteepSlopeAngleDeg = 85.0; override SteepSlopeAngleDeg = 85.0;
override WallAngleDeg = 95.0; override WallAngleDeg = 95.0;

Binary file not shown.

View File

@ -91,7 +91,7 @@ public:
float MinSpeedForRotation = 10.0f; float MinSpeedForRotation = 10.0f;
// ======================================================================== // ========================================================================
// JUMP CONFIGURATION (NEW) // JUMP CONFIGURATION
// ======================================================================== // ========================================================================
/** Target height of the jump in cm (UE units) */ /** Target height of the jump in cm (UE units) */
@ -147,7 +147,7 @@ public:
float MinJumpVelocity = 0.0f; float MinJumpVelocity = 0.0f;
// ======================================================================== // ========================================================================
// AIR PHYSICS (NEW) // AIR PHYSICS
// ======================================================================== // ========================================================================
/** Multiplier for gravity when falling. Makes jump feel "heavy" and snappy. */ /** Multiplier for gravity when falling. Makes jump feel "heavy" and snappy. */
@ -182,12 +182,6 @@ public:
// COLLISION // COLLISION
// ======================================================================== // ========================================================================
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Collision")
float CapsuleRadius = 34.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Collision")
float CapsuleHalfHeight = 88.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Collision") UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Collision")
int32 MaxSlideIterations = 3; int32 MaxSlideIterations = 3;
@ -220,7 +214,7 @@ public:
// ======================================================================== // ========================================================================
/** Physics update rate in Hz (default: 120) */ /** Physics update rate in Hz (default: 120) */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Fixed Timestep", UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Fixed Timestep",
meta = (ClampMin = "30", ClampMax = "240")) meta = (ClampMin = "30", ClampMax = "240"))
float PhysicsTickRate = 120.0f; float PhysicsTickRate = 120.0f;
@ -243,4 +237,4 @@ public:
#if WITH_EDITOR #if WITH_EDITOR
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override; virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
#endif #endif
}; };

View File

@ -5,23 +5,80 @@ import type { Integer } from '/Content/UE/Integer.ts';
import { PrimaryDataAsset } from '/Content/UE/PrimaryDataAsset.ts'; import { PrimaryDataAsset } from '/Content/UE/PrimaryDataAsset.ts';
export class TengriMovementConfig extends PrimaryDataAsset { export class TengriMovementConfig extends PrimaryDataAsset {
// ========================================================================
// PHYSICS
// ========================================================================
public readonly MaxSpeed: Float = 800.0; public readonly MaxSpeed: Float = 800.0;
public readonly Acceleration: Float = 2048.0; public readonly Acceleration: Float = 2048.0;
public readonly Friction: Float = 8.0; public readonly Friction: Float = 8.0;
public readonly Gravity: Float = 980.0;
public readonly RotationSpeed: Float = 360.0; public readonly RotationSpeed: Float = 360.0;
public readonly MinSpeedForRotation: Float = 10.0; public readonly MinSpeedForRotation: Float = 10.0;
public readonly SteepSlopeSlideFactor: Float = 0.0;
// ========================================================================
// JUMP CONFIGURATION
// ========================================================================
public readonly MaxJumpHeight: Float = 200.0;
public readonly MinJumpHeight: Float = 40.0;
public readonly TimeToJumpApex: Float = 0.5;
// ========================================================================
// JUMP FEEL (TIMINGS)
// ========================================================================
public readonly CoyoteTime: Float = 0.15;
public readonly JumpBufferTime: Float = 0.15;
// ========================================================================
// AIR PHYSICS
// ========================================================================
public readonly AirControl: Float = 0.5;
public readonly AirFriction: Float = 0.0;
// ========================================================================
// AIR PHYSICS
// ========================================================================
public readonly FallingGravityScale: Float = 1.5;
public readonly TerminalVelocity: Float = 2000;
public readonly HeavyLandVelocityThreshold: Float = -1000;
// ========================================================================
// SURFACE ANGLES
// ========================================================================
public readonly WalkableAngleDeg: Float = 50.0;
public readonly SteepSlopeAngleDeg: Float = 85.0;
public readonly WallAngleDeg: Float = 95.0;
// ========================================================================
// COLLISION
// ========================================================================
public readonly CapsuleRadius: Float = 34.0; public readonly CapsuleRadius: Float = 34.0;
public readonly CapsuleHalfHeight: Float = 88.0; public readonly CapsuleHalfHeight: Float = 88.0;
public readonly MaxSlideIterations: Integer = 3; public readonly MaxSlideIterations: Integer = 3;
public readonly MaxStepHeight: Float = 45.0; public readonly MaxStepHeight: Float = 45.0;
// ========================================================================
// GROUND SNAPPING
// ========================================================================
public readonly GroundSnapDistance: Float = 20.0; public readonly GroundSnapDistance: Float = 20.0;
public readonly GroundSnapOffset: Float = 0.15; public readonly GroundSnapOffset: Float = 0.15;
public readonly WalkableAngleDeg: Float = 50.0; // ========================================================================
public readonly SteepSlopeAngleDeg: Float = 85.0; // SLOPE PHYSICS
public readonly WallAngleDeg: Float = 95.0; // ========================================================================
public readonly SteepSlopeSlideFactor: Float = 0.0;
// ========================================================================
// FIXED TIMESTEP
// ========================================================================
public readonly PhysicsTickRate: Float = 120.0;
public readonly MaxAccumulatedTime: Float = 0.1;
public readonly bEnableInterpolation: boolean = true;
} }