void ABullet_762::OnHit(AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit) { FCollisionQueryParams TraceParams(FName(TEXT("ShootTrace")), true, this); TraceParams.bTraceComplex = true; TraceParams.bTraceAsyncScene = true; TraceParams.bReturnPhysicalMaterial = true; TraceParams.bFindInitialOverlaps = true; FHitResult HitData(ForceInit); float distance = 1.f; GetWorld()->LineTraceSingle(HitData, Hit.ImpactPoint + (GetActorRotation().Vector() * 1.1f), Hit.ImpactPoint, ECC_MAX, TraceParams); while (HitData.IsValidBlockingHit() && distance < 2000.f) { distance++; GetWorld()->LineTraceSingle(HitData, Hit.ImpactPoint + (GetActorRotation().Vector() * distance), Hit.ImpactPoint, ECC_MAX, TraceParams); DrawDebugPoint(GetWorld(), HitData.TraceStart, 8.f, FColor::Red, false, 10.f); } ... }