83 - Correcting the Weapon Rotation
This commit is contained in:
parent
afa339d8c1
commit
ad7af7454b
Binary file not shown.
|
@ -58,11 +58,18 @@ void UBlasterAnimInstance::NativeUpdateAnimation(float DeltaSeconds)
|
||||||
|
|
||||||
if (bWeaponEquipped && EquippedWeapon && EquippedWeapon->GetWeaponMesh() && BlasterCharacter->GetMesh())
|
if (bWeaponEquipped && EquippedWeapon && EquippedWeapon->GetWeaponMesh() && BlasterCharacter->GetMesh())
|
||||||
{
|
{
|
||||||
LeftHandTransform = EquippedWeapon->GetWeaponMesh()->GetSocketTransform(FName("LeftHandSocket"), ERelativeTransformSpace::RTS_World);
|
LeftHandTransform = EquippedWeapon->GetWeaponMesh()->GetSocketTransform(FName("LeftHandSocket"), RTS_World);
|
||||||
FVector OutPosition;
|
FVector OutPosition;
|
||||||
FRotator OutRotation;
|
FRotator OutRotation;
|
||||||
BlasterCharacter->GetMesh()->TransformToBoneSpace(FName("hand_r"), LeftHandTransform.GetLocation(), FRotator::ZeroRotator, OutPosition, OutRotation);
|
BlasterCharacter->GetMesh()->TransformToBoneSpace(FName("hand_r"), LeftHandTransform.GetLocation(), FRotator::ZeroRotator, OutPosition, OutRotation);
|
||||||
LeftHandTransform.SetLocation(OutPosition);
|
LeftHandTransform.SetLocation(OutPosition);
|
||||||
LeftHandTransform.SetRotation(FQuat(OutRotation));
|
LeftHandTransform.SetRotation(FQuat(OutRotation));
|
||||||
|
|
||||||
|
if (BlasterCharacter->IsLocallyControlled())
|
||||||
|
{
|
||||||
|
bLocallyControlled = true;
|
||||||
|
const FTransform RightHandTransform = EquippedWeapon->GetWeaponMesh()->GetSocketTransform(FName("Hand_R"), RTS_World);
|
||||||
|
RightHandRotation = UKismetMathLibrary::FindLookAtRotation(RightHandTransform.GetLocation(), RightHandTransform.GetLocation() + (RightHandTransform.GetLocation() - BlasterCharacter->GetHitTarget()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,4 +66,10 @@ private:
|
||||||
|
|
||||||
UPROPERTY(BlueprintReadOnly, Category="Movement", meta=(AllowPrivateAccess = "true"))
|
UPROPERTY(BlueprintReadOnly, Category="Movement", meta=(AllowPrivateAccess = "true"))
|
||||||
ETurningInPlace TurningInPlace;
|
ETurningInPlace TurningInPlace;
|
||||||
|
|
||||||
|
UPROPERTY(BlueprintReadOnly, Category="Movement", meta=(AllowPrivateAccess = "true"))
|
||||||
|
FRotator RightHandRotation;
|
||||||
|
|
||||||
|
UPROPERTY(BlueprintReadOnly, Category="Movement", meta=(AllowPrivateAccess = "true"))
|
||||||
|
bool bLocallyControlled;
|
||||||
};
|
};
|
||||||
|
|
|
@ -323,6 +323,13 @@ AWeapon* ABlasterCharacter::GetEquippedWeapon()
|
||||||
return Combat->EquippedWeapon;
|
return Combat->EquippedWeapon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FVector ABlasterCharacter::GetHitTarget() const
|
||||||
|
{
|
||||||
|
if (Combat == nullptr) return FVector();
|
||||||
|
|
||||||
|
return Combat->HitTarget;
|
||||||
|
}
|
||||||
|
|
||||||
void ABlasterCharacter::OnRep_OverlappingWeapon(AWeapon* LastWeapon)
|
void ABlasterCharacter::OnRep_OverlappingWeapon(AWeapon* LastWeapon)
|
||||||
{
|
{
|
||||||
if (OverlappingWeapon)
|
if (OverlappingWeapon)
|
||||||
|
|
|
@ -76,4 +76,5 @@ public:
|
||||||
FORCEINLINE float GetAO_Pitch() const { return AO_Pitch; };
|
FORCEINLINE float GetAO_Pitch() const { return AO_Pitch; };
|
||||||
AWeapon* GetEquippedWeapon();
|
AWeapon* GetEquippedWeapon();
|
||||||
FORCEINLINE ETurningInPlace GetTurningInPlace() const { return TurningInPlace; };
|
FORCEINLINE ETurningInPlace GetTurningInPlace() const { return TurningInPlace; };
|
||||||
|
FVector GetHitTarget() const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -43,6 +43,13 @@ void UCombatComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActo
|
||||||
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
|
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
|
||||||
|
|
||||||
SetHUDCrosshairs(DeltaTime);
|
SetHUDCrosshairs(DeltaTime);
|
||||||
|
|
||||||
|
if (Character && Character->IsLocallyControlled())
|
||||||
|
{
|
||||||
|
FHitResult HitResult;
|
||||||
|
TraceUnderCrosshairs(HitResult);
|
||||||
|
HitTarget = HitResult.ImpactPoint;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UCombatComponent::SetHUDCrosshairs(float DeltaTime)
|
void UCombatComponent::SetHUDCrosshairs(float DeltaTime)
|
||||||
|
@ -167,6 +174,8 @@ void UCombatComponent::TraceUnderCrosshairs(FHitResult& TraceHitResult)
|
||||||
End,
|
End,
|
||||||
ECollisionChannel::ECC_Visibility
|
ECollisionChannel::ECC_Visibility
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (!TraceHitResult.bBlockingHit) TraceHitResult.ImpactPoint = End;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -69,4 +69,6 @@ private:
|
||||||
|
|
||||||
float CrosshairVelocityFactor;
|
float CrosshairVelocityFactor;
|
||||||
float CrosshairInAirFactor;
|
float CrosshairInAirFactor;
|
||||||
|
|
||||||
|
FVector HitTarget;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue