So, i cant really figure why my exact same code for tracing doesnt work correctly on 4.14
Using the following code for tracing
void AWeapon::Tick(float DeltaSeconds)
{
Super::Tick(DeltaSeconds);
FVector TraceStart;
FVector TraceEnd;
int i;
FHitResult HitData(ForceInit);
FCollisionQueryParams Params;
Params.bTraceComplex = true;
Params.bReturnPhysicalMaterial = false;
StartSockEnd = Mesh->GetSocketLocation(SocketStartName); //
EndSockEnd = Mesh->GetSocketLocation(SocketEndName);
/* if we should trace*/
if (bTrace)
{
for (i = 0; i<TracesPerSwing; i++)
{
TraceStart = FMath::Lerp(StartSockEnd, EndSockEnd, i / TracesPerSwing);
TraceEnd = FMath::Lerp(A, B, i / TracesPerSwing);
TestThing(TraceStart, TraceEnd);
}
A = StartSockEnd;
B = EndSockEnd;
}
}
// tracing occurs here
void AMeleeWeapon::TestThing(FVector Start, FVector End)
{
FHitResult HitData(ForceInit);
FCollisionQueryParams Params;
Params.bTraceComplex = true;
Params.bReturnPhysicalMaterial = false;
DrawDebugLine(Instigator->GetWorld(), Start, End, FColor::Red, false, 9, 0, 1.0);
if (Target->GetMesh()->LineTraceComponent(HitData, Start, End, Params))
{
OnHit(HitData);
DrawDebugLine(Instigator->GetWorld(), Start, HitData.ImpactPoint, FColor::Green, false, 9, 0, 1.0);
}
}
I get perfect results on UE4 4.12 , 4.13 as you can see in this example video
However, here is the same code running on 4.14
As you can see the trace somehow hits the character even when im not near it
And the socket , start & end locations are correct as you can see trough the debug red line. however when used in the LineTraceComponent function it goes crazy
Whats funny is that if i use the LineTraceSingleByObject / any other trace function, it works perfectly fine. it only performs that weird detection when im using the LineTraceComponent function
Any help is greatly appreciated