Attempted Change to Recoil Timing for Weapons

This commit is contained in:
MH261677 2023-10-09 14:51:50 +01:00
parent e03c19e421
commit f427b07bb9
3 changed files with 11 additions and 8 deletions

View File

@ -24,6 +24,9 @@ void ABaseWeaponClass::BeginPlay()
{ {
Super::BeginPlay(); Super::BeginPlay();
collisionParams.AddIgnoredActor(playerInWorld);
collisionParams.AddIgnoredActor(this);
// Attempt to find the player character // Attempt to find the player character
APlayerController* PlayerController = UGameplayStatics::GetPlayerController(this, 0); APlayerController* PlayerController = UGameplayStatics::GetPlayerController(this, 0);
playerInWorld = Cast<AEndlessVendettaCharacter>(PlayerController->GetCharacter()); playerInWorld = Cast<AEndlessVendettaCharacter>(PlayerController->GetCharacter());
@ -88,8 +91,9 @@ void ABaseWeaponClass::ApplyRecoil(float DeltaTime)
float amplitude = RecoilCurve->GetFloatValue(recoilTime); //get current value of curve in time float amplitude = RecoilCurve->GetFloatValue(recoilTime); //get current value of curve in time
recoilTime += DeltaTime; recoilTime += DeltaTime;
if (bulletCountShoot <= 3) playerInWorld->AddControllerPitchInput(GetRecoilPitch(amplitude, recoilTime)); if (bulletCountShoot <= 3) playerInWorld->AddControllerPitchInput(GetRecoilPitch(amplitude, recoilTime));
traceEnd = traceStart + (UKismetMathLibrary::GetForwardVector(playerInWorld->GetControlRotation() * GetRecoilPitch(amplitude, recoilTime))); newTraceEnd = traceStart + (UKismetMathLibrary::GetForwardVector(playerInWorld->GetControlRotation() * GetRecoilPitch(amplitude, recoilTime)));
//UE_LOG(LogTemp, Warning, TEXT("Controller pitch: Pitch: %f Yaw: %f, Roll: %f"), playerInWorld->GetControlRotation().Pitch, playerInWorld->GetControlRotation().Yaw, playerInWorld->GetControlRotation().Roll); GetWorld()->LineTraceSingleByChannel(outHit, traceStart, newTraceEnd, ECC_Visibility, collisionParams);
UE_LOG(LogTemp, Warning, TEXT("traceEnd: %s"), *traceEnd.ToString());
playerInWorld->AddControllerYawInput(GetRecoilYaw(amplitude, recoilTime)); playerInWorld->AddControllerYawInput(GetRecoilYaw(amplitude, recoilTime));
//UE_LOG(LogTemp, Warning, TEXT("recoilTime: %f"), recoilTime); //UE_LOG(LogTemp, Warning, TEXT("recoilTime: %f"), recoilTime);
UpdateSamples(amplitude, recoilTime); UpdateSamples(amplitude, recoilTime);
@ -150,15 +154,12 @@ void ABaseWeaponClass::Fire()
//do damage fallof based off distance //do damage fallof based off distance
traceStart = GunStartArrow->GetComponentLocation(); traceStart = GunStartArrow->GetComponentLocation();
traceEnd = traceStart + (GunStartArrow->GetForwardVector() * BulletDistance); traceEnd = traceStart + (GunStartArrow->GetForwardVector() * BulletDistance);
FCollisionQueryParams collisionParams;
collisionParams.AddIgnoredActor(playerInWorld);
collisionParams.AddIgnoredActor(this);
/*RecoilVerticalLimit(outHit);*/ /*RecoilVerticalLimit(outHit);*/
if (GetWorldTimerManager().IsTimerActive(timerHandle)) if (GetWorldTimerManager().IsTimerActive(timerHandle))
{ {
return; return;
} }
GetWorld()->LineTraceSingleByChannel(outHit, traceStart, traceEnd, ECC_Visibility, collisionParams); if (bulletCountShoot <= 3) GetWorld()->LineTraceSingleByChannel(outHit, traceStart, traceEnd, ECC_Visibility, collisionParams);
//Debug line to see where the trace hit //Debug line to see where the trace hit
DrawDebugLine(this->GetWorld(), traceStart, traceEnd, FColor::Red, false, 5.0f, 0U, 2.5f); DrawDebugLine(this->GetWorld(), traceStart, traceEnd, FColor::Red, false, 5.0f, 0U, 2.5f);
playerControllerRef->PlayerCameraManager->StartCameraShake(CameraShakeClass, 1); playerControllerRef->PlayerCameraManager->StartCameraShake(CameraShakeClass, 1);

View File

@ -116,6 +116,8 @@ public:
FHitResult outHit; FHitResult outHit;
FVector traceStart; FVector traceStart;
FVector traceEnd; FVector traceEnd;
FVector newTraceEnd;
FCollisionQueryParams collisionParams;
//UFUNCTION(BlueprintCallable, Category = "Weapons") //UFUNCTION(BlueprintCallable, Category = "Weapons")
//void RecoilVerticalLimit(FHitResult Outhit); //void RecoilVerticalLimit(FHitResult Outhit);