test(placement): the player stands on Road_Hollywood, not on the sidewalk

Three spawn heights - 455, 395, 469 - produced identical captures, and the in-game probe names
the surface every time: mesh=Road_Hollywood at Z 366. The north sidewalk exists, carries
collision and its top is Z 380, so the character stands 14 cm BELOW the pavement and reads as
floating against the kerb; its shadow falls on the road because the road is genuinely lower.

That is why lowering the spawn changed nothing: the capsule falls through to the road whatever
height it starts at. The question left is the player start's XY footprint, not its Z - the
sidewalk is right there but the capsule never lands on it.

Player start set to 469 (sidewalk top 380 + capsule half 88 + 1) so that, once the footprint is
fixed, the height is already right.
This commit is contained in:
zwitschi committed 2026-11-09 17:18:23 +01:00
1 parent 1bb4bb97ed
commit c94ec7bbb9
40 files changed
+73 -54

No files matched your search

@@ -392,11 +392,22 @@ void AGigLineCharacter::LogFootProbes()
const FVector From = GetActorLocation() + FVector(0.f, 0.f, 3000.f);
const bool bTop = WorldTop->LineTraceSingleByChannel(Top, From,
From - FVector(0.f, 0.f, 6000.f), ECC_WorldStatic, QTop);
FString MeshName = TEXT("none");
if (bTop)
{
if (const UStaticMeshComponent* HitMesh = Cast<UStaticMeshComponent>(Top.GetComponent()))
{
if (const UStaticMesh* Asset = HitMesh->GetStaticMesh())
{
MeshName = Asset->GetName();
}
}
}
UE_LOG(LogTemp, Warning,
TEXT("GigLine top surface under player: hit=%d Z=%.0f actor=%s (actor Z %.0f)"),
TEXT("GigLine top surface under player: hit=%d Z=%.0f actor=%s mesh=%s (actor Z %.0f)"),
bTop ? 1 : 0, bTop ? Top.ImpactPoint.Z : -9999.f,
bTop && Top.GetActor() ? *Top.GetActor()->GetName() : TEXT("none"),
GetActorLocation().Z);
*MeshName, GetActorLocation().Z);
}
const FVector Feet = GetActorLocation() - FVector(0.f, 0.f, CapsuleHalf);