diff --git a/Content/Movement/DA_TengriMovementConfig.ts b/Content/Movement/DA_TengriMovementConfig.ts index e8da967..cc35ef6 100644 --- a/Content/Movement/DA_TengriMovementConfig.ts +++ b/Content/Movement/DA_TengriMovementConfig.ts @@ -5,20 +5,34 @@ import { TengriMovementConfig } from '/Source/TengriPlatformer/Movement/Core/Ten export class DA_TengriMovementConfig extends TengriMovementConfig { override MaxSpeed = 800.0; override Acceleration = 2048.0; - override Friction = 8.0; - override Gravity = 980.0; + override Friction = 6.0; override RotationSpeed = 360.0; override MinSpeedForRotation = 10.0; override SteepSlopeSlideFactor = 0.0; - override CapsuleRadius = 34.0; - override CapsuleHalfHeight = 88.0; + override MaxJumpHeight = 1000.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 MaxStepHeight = 45.0; override GroundSnapDistance = 20.0; override GroundSnapOffset = 0.15; + override PhysicsTickRate = 120; + override MaxAccumulatedTime = 0.1; + override bEnableInterpolation = true; + override WalkableAngleDeg = 50.0; override SteepSlopeAngleDeg = 85.0; override WallAngleDeg = 95.0; diff --git a/Content/Movement/DA_TengriMovementConfig.uasset b/Content/Movement/DA_TengriMovementConfig.uasset index ebc4b77..a6e47f2 100644 --- a/Content/Movement/DA_TengriMovementConfig.uasset +++ b/Content/Movement/DA_TengriMovementConfig.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c1ab3af1bead68f886c036df3a75ab1381591ffba4a23e6c0893e44dc1b53519 -size 1401 +oid sha256:1a39662f17e16b832cf67c05c6053b4b4efe0776e1f3e57b6557d0057dd9915a +size 1600 diff --git a/Source/TengriPlatformer/Movement/Core/TengriMovementConfig.h b/Source/TengriPlatformer/Movement/Core/TengriMovementConfig.h index 0c29ddd..c37737b 100644 --- a/Source/TengriPlatformer/Movement/Core/TengriMovementConfig.h +++ b/Source/TengriPlatformer/Movement/Core/TengriMovementConfig.h @@ -91,7 +91,7 @@ public: float MinSpeedForRotation = 10.0f; // ======================================================================== - // JUMP CONFIGURATION (NEW) + // JUMP CONFIGURATION // ======================================================================== /** Target height of the jump in cm (UE units) */ @@ -147,7 +147,7 @@ public: float MinJumpVelocity = 0.0f; // ======================================================================== - // AIR PHYSICS (NEW) + // AIR PHYSICS // ======================================================================== /** Multiplier for gravity when falling. Makes jump feel "heavy" and snappy. */ @@ -182,12 +182,6 @@ public: // COLLISION // ======================================================================== - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Collision") - float CapsuleRadius = 34.0f; - - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Collision") - float CapsuleHalfHeight = 88.0f; - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Collision") int32 MaxSlideIterations = 3; @@ -220,7 +214,7 @@ public: // ======================================================================== /** Physics update rate in Hz (default: 120) */ - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Fixed Timestep", + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Fixed Timestep", meta = (ClampMin = "30", ClampMax = "240")) float PhysicsTickRate = 120.0f; @@ -243,4 +237,4 @@ public: #if WITH_EDITOR virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override; #endif -}; \ No newline at end of file +}; diff --git a/Source/TengriPlatformer/Movement/Core/TengriMovementConfig.ts b/Source/TengriPlatformer/Movement/Core/TengriMovementConfig.ts index f43d7ba..b5c22fc 100644 --- a/Source/TengriPlatformer/Movement/Core/TengriMovementConfig.ts +++ b/Source/TengriPlatformer/Movement/Core/TengriMovementConfig.ts @@ -5,23 +5,80 @@ import type { Integer } from '/Content/UE/Integer.ts'; import { PrimaryDataAsset } from '/Content/UE/PrimaryDataAsset.ts'; export class TengriMovementConfig extends PrimaryDataAsset { + // ======================================================================== + // PHYSICS + // ======================================================================== public readonly MaxSpeed: Float = 800.0; public readonly Acceleration: Float = 2048.0; public readonly Friction: Float = 8.0; - public readonly Gravity: Float = 980.0; public readonly RotationSpeed: Float = 360.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 CapsuleHalfHeight: Float = 88.0; public readonly MaxSlideIterations: Integer = 3; public readonly MaxStepHeight: Float = 45.0; + // ======================================================================== + // GROUND SNAPPING + // ======================================================================== + public readonly GroundSnapDistance: Float = 20.0; public readonly GroundSnapOffset: Float = 0.15; - public readonly WalkableAngleDeg: Float = 50.0; - public readonly SteepSlopeAngleDeg: Float = 85.0; - public readonly WallAngleDeg: Float = 95.0; + // ======================================================================== + // SLOPE PHYSICS + // ======================================================================== + + 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; }