test(vehicle): clamping the velocity to zero does not stop the rise - the transform is written
The decisive clamp: zero linear and angular velocity every frame for two seconds. t=0.25 Z=3220 vZ=0 | t=0.75 Z=3683 vZ=0 | t=1.25 Z=4197 vZ=0 It rises at ~1200 cm/s with velocity pinned to zero, so this is not a force, an impulse, or a bad initial state - all of those the clamp would have removed. Something calls a transform setter on the vehicle every frame. Our own source contains exactly one direct transform write outside the character (the shot actor's camera), so the writer is engine-side: the Chaos vehicle component driving UpdatedComponent from a vehicle state that was never created, or a skeletal-mesh transform update. Also diffed the two maps, since the pawn works in ReviewMap and not in DemoMap: kill_z, gravity, lights and partitioning are identical; DemoMap adds 593 static mesh actors, a height fog and a post-process volume, ReviewMap adds a shot actor and the character. Nothing in either list can write a transform, so the map difference is not in its actors or settings.
This commit is contained in:
1 parent
331e2016be
commit
387a4530de
78 files changed
+111
-76
No files matched your search
@@ -359,6 +359,17 @@ void AGigLineVehicle::Tick(float DeltaSeconds)
|
||||
}
|
||||
}
|
||||
|
||||
// Kill any injected velocity every frame for the first two seconds. If the pawn still rises, the
|
||||
// writer sets the transform directly; if it settles, the whole thing was one bad initial impulse.
|
||||
if (SettleElapsed < 2.0f)
|
||||
{
|
||||
if (USkeletalMeshComponent* Body = GetMesh())
|
||||
{
|
||||
Body->SetPhysicsLinearVelocity(FVector::ZeroVector);
|
||||
Body->SetPhysicsAngularVelocityInDegrees(FVector::ZeroVector);
|
||||
}
|
||||
}
|
||||
|
||||
// Velocity profile: an impulse shows as a spike at t=0, a force as steady growth.
|
||||
{
|
||||
static float NextSample = 0.0f;
|
||||
|
||||
Reference in new issue
Block a user