test(vehicle): the body barely moves, so something else moves the actor
The motion probe splits the problem in two: velocity -24, -182, -28 cm/s (a body that cannot climb 9 m in 1.5 s) mass 1500 kg (the override DID apply) box 452 x 205 x 40 (correct) bounds extent 1,1,1 (still degenerate) actor Z 1393, spawned at 458 The physics body is nearly still while the actor is nine metres above its spawn. So this is not a force problem at all - it is a transform problem: something writes the actor's transform that is neither the body's velocity nor our code, which is also what the degenerate bounds are telling us from the other side. Next: find who writes that transform. Suspects are the Chaos movement component's UpdateState / OnUpdateTransform and the component hierarchy - a pawn whose root is the mesh while the physics state belongs elsewhere behaves exactly like this. Pawn parked again so the demo stays clean.
This commit is contained in:
1 parent
2ecd029cc0
commit
14ed01a4e6
77 files changed
+87
-77
No files matched your search
@@ -339,6 +339,16 @@ void AGigLineVehicle::Tick(float DeltaSeconds)
|
||||
B.Origin.X, B.Origin.Y, B.Origin.Z, B.BoxExtent.X, B.BoxExtent.Y, B.BoxExtent.Z);
|
||||
}
|
||||
UE_LOG(LogTemp, Warning, TEXT("GigLine vehicle geometry: %s | %s"), *BoxInfo, *BoundsInfo);
|
||||
if (Body)
|
||||
{
|
||||
const FVector Vel = Body->GetPhysicsLinearVelocity();
|
||||
const FVector Angular = Body->GetPhysicsAngularVelocityInDegrees();
|
||||
UE_LOG(LogTemp, Warning,
|
||||
TEXT("GigLine vehicle motion: velocity %.0f,%.0f,%.0f angular %.0f,%.0f,%.0f "
|
||||
"mass %.0f sim=%d kinematic=%d"),
|
||||
Vel.X, Vel.Y, Vel.Z, Angular.X, Angular.Y, Angular.Z, Body->GetMass(),
|
||||
Body->IsSimulatingPhysics() ? 1 : 0, Body->IsAnySimulatingPhysics() ? 1 : 0);
|
||||
}
|
||||
{
|
||||
const USkeletalMesh* Asset = Body ? Body->GetSkeletalMeshAsset() : nullptr;
|
||||
UE_LOG(LogTemp, Warning, TEXT("GigLine vehicle mesh asset: %s"),
|
||||
|
||||
Reference in new issue
Block a user