diff --git a/Content/Blueprints/Character/Animation/BlasterAnimBP.uasset b/Content/Blueprints/Character/Animation/BlasterAnimBP.uasset index 3d74017..3e6894a 100644 Binary files a/Content/Blueprints/Character/Animation/BlasterAnimBP.uasset and b/Content/Blueprints/Character/Animation/BlasterAnimBP.uasset differ diff --git a/Source/Blaster/Character/BlasterCharacter.cpp b/Source/Blaster/Character/BlasterCharacter.cpp index 8620860..f3ee8f2 100644 --- a/Source/Blaster/Character/BlasterCharacter.cpp +++ b/Source/Blaster/Character/BlasterCharacter.cpp @@ -177,7 +177,11 @@ void ABlasterCharacter::AimOffset(float DeltaTime) FRotator CurrentAimRotation = FRotator(0.f, GetBaseAimRotation().Yaw, 0.f); FRotator DeltaAimRotation = UKismetMathLibrary::NormalizedDeltaRotator(CurrentAimRotation, StartingAimRotation); AO_Yaw = DeltaAimRotation.Yaw; - bUseControllerRotationYaw = false; + if (TurningInPlace == ETurningInPlace::ETIP_NotTurning) + { + InterpAO_Yaw = AO_Yaw; + } + bUseControllerRotationYaw = true; TurnInPlace(DeltaTime); } if (Speed > 0.f || bIsInAir) // Running or jumping @@ -207,6 +211,7 @@ void ABlasterCharacter::ServerEquipButtonPressed_Implementation() void ABlasterCharacter::TurnInPlace(float DeltaTime) { + // UE_LOG(LogTemp, Warning, TEXT("AO_Yaw: %f"), AO_Yaw); if (AO_Yaw > 90.f) { TurningInPlace = ETurningInPlace::ETIP_Right; @@ -215,6 +220,28 @@ void ABlasterCharacter::TurnInPlace(float DeltaTime) { TurningInPlace = ETurningInPlace::ETIP_Left; } + if (TurningInPlace != ETurningInPlace::ETIP_NotTurning) + { + InterpAO_Yaw = FMath::FInterpTo(InterpAO_Yaw, 0.f, DeltaTime, 4.f); + AO_Yaw = InterpAO_Yaw; + if (FMath::Abs(AO_Yaw) < 15.f) + { + TurningInPlace = ETurningInPlace::ETIP_NotTurning; + StartingAimRotation = FRotator(0.f, GetBaseAimRotation().Yaw, 0.f); + } + } + switch (TurningInPlace) + { + case ETurningInPlace::ETIP_Left: + UE_LOG(LogTemp, Warning, TEXT("TurningInPlace: Left")); + break; + case ETurningInPlace::ETIP_Right: + UE_LOG(LogTemp, Warning, TEXT("TurningInPlace: Right")); + break; + case ETurningInPlace::ETIP_NotTurning: + UE_LOG(LogTemp, Warning, TEXT("TurningInPlace: NotTurning")); + break; + } } void ABlasterCharacter::SetOverlappingWeapon(AWeapon* Weapon) diff --git a/Source/Blaster/Character/BlasterCharacter.h b/Source/Blaster/Character/BlasterCharacter.h index 167168d..4b720a7 100644 --- a/Source/Blaster/Character/BlasterCharacter.h +++ b/Source/Blaster/Character/BlasterCharacter.h @@ -55,6 +55,7 @@ private: void ServerEquipButtonPressed(); float AO_Yaw; + float InterpAO_Yaw; float AO_Pitch; FRotator StartingAimRotation;