104 - Disable Movement when Eliminated
This commit is contained in:
parent
018013cb5d
commit
c837a3f86d
Binary file not shown.
|
@ -114,6 +114,10 @@ void ABlasterCharacter::PlayEliminatedMontage()
|
|||
|
||||
void ABlasterCharacter::Eliminated()
|
||||
{
|
||||
if (Combat && Combat->EquippedWeapon)
|
||||
{
|
||||
Combat->EquippedWeapon->Dropped();
|
||||
}
|
||||
MulticastEliminated();
|
||||
GetWorldTimerManager().SetTimer(EliminationTimer, this, &ABlasterCharacter::EliminationTimerFinished, EliminationDelay);
|
||||
}
|
||||
|
@ -123,6 +127,7 @@ void ABlasterCharacter::MulticastEliminated_Implementation()
|
|||
bEliminated = true;
|
||||
PlayEliminatedMontage();
|
||||
|
||||
// Start dissolve effect
|
||||
if (DissolveMaterialInstance)
|
||||
{
|
||||
DynamicDissolveMaterialInstance = UMaterialInstanceDynamic::Create(DissolveMaterialInstance, this);
|
||||
|
@ -131,6 +136,18 @@ void ABlasterCharacter::MulticastEliminated_Implementation()
|
|||
DynamicDissolveMaterialInstance->SetScalarParameterValue(TEXT("Glow"), 200.f);
|
||||
}
|
||||
StartDissolve();
|
||||
|
||||
// Disable character movement
|
||||
GetCharacterMovement()->DisableMovement();
|
||||
GetCharacterMovement()->StopMovementImmediately();
|
||||
if (BlasterPlayerController)
|
||||
{
|
||||
DisableInput(BlasterPlayerController);
|
||||
}
|
||||
|
||||
// Disable collision
|
||||
GetCapsuleComponent()->SetCollisionEnabled(ECollisionEnabled::NoCollision);
|
||||
GetMesh()->SetCollisionEnabled(ECollisionEnabled::NoCollision);
|
||||
}
|
||||
|
||||
void ABlasterCharacter::EliminationTimerFinished()
|
||||
|
|
|
@ -164,15 +164,6 @@ void UCombatComponent::ServerSetAiming_Implementation(bool bIsAiming)
|
|||
}
|
||||
}
|
||||
|
||||
void UCombatComponent::OnRep_EquippedWeapon()
|
||||
{
|
||||
if (EquippedWeapon && Character)
|
||||
{
|
||||
Character->GetCharacterMovement()->bOrientRotationToMovement = false;
|
||||
Character->bUseControllerRotationYaw = true;
|
||||
}
|
||||
}
|
||||
|
||||
void UCombatComponent::Fire()
|
||||
{
|
||||
if (bCanFire)
|
||||
|
@ -295,3 +286,18 @@ void UCombatComponent::EquipWeapon(AWeapon* WeaponToEquip)
|
|||
Character->GetCharacterMovement()->bOrientRotationToMovement = false;
|
||||
Character->bUseControllerRotationYaw = true;
|
||||
}
|
||||
|
||||
void UCombatComponent::OnRep_EquippedWeapon()
|
||||
{
|
||||
if (EquippedWeapon && Character)
|
||||
{
|
||||
EquippedWeapon->SetWeaponState(EWeaponState::EWS_Equipped);
|
||||
const USkeletalMeshSocket* HandSocket = Character->GetMesh()->GetSocketByName(FName("RightHandSocket"));
|
||||
if (HandSocket)
|
||||
{
|
||||
HandSocket->AttachActor(EquippedWeapon, Character->GetMesh());
|
||||
}
|
||||
Character->GetCharacterMovement()->bOrientRotationToMovement = false;
|
||||
Character->bUseControllerRotationYaw = true;
|
||||
}
|
||||
}
|
|
@ -89,6 +89,18 @@ void AWeapon::SetWeaponState(EWeaponState State)
|
|||
case EWeaponState::EWS_Equipped:
|
||||
ShowPickupWidget(false);
|
||||
GetAreaSphere()->SetCollisionEnabled(ECollisionEnabled::NoCollision);
|
||||
WeaponMesh->SetSimulatePhysics(false);
|
||||
WeaponMesh->SetEnableGravity(false);
|
||||
WeaponMesh->SetCollisionEnabled(ECollisionEnabled::NoCollision);
|
||||
break;
|
||||
case EWeaponState::EWS_Dropped:
|
||||
if (HasAuthority())
|
||||
{
|
||||
GetAreaSphere()->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
|
||||
}
|
||||
WeaponMesh->SetSimulatePhysics(true);
|
||||
WeaponMesh->SetEnableGravity(true);
|
||||
WeaponMesh->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -99,6 +111,14 @@ void AWeapon::OnRep_WeaponState()
|
|||
{
|
||||
case EWeaponState::EWS_Equipped:
|
||||
ShowPickupWidget(false);
|
||||
WeaponMesh->SetSimulatePhysics(false);
|
||||
WeaponMesh->SetEnableGravity(false);
|
||||
WeaponMesh->SetCollisionEnabled(ECollisionEnabled::NoCollision);
|
||||
break;
|
||||
case EWeaponState::EWS_Dropped:
|
||||
WeaponMesh->SetSimulatePhysics(true);
|
||||
WeaponMesh->SetEnableGravity(true);
|
||||
WeaponMesh->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -136,3 +156,11 @@ void AWeapon::Fire(const FVector& HitTarget)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void AWeapon::Dropped()
|
||||
{
|
||||
SetWeaponState(EWeaponState::EWS_Dropped);
|
||||
const FDetachmentTransformRules DetachRules(EDetachmentRule::KeepWorld, true);
|
||||
WeaponMesh->DetachFromComponent(DetachRules);
|
||||
SetOwner(nullptr);
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ public:
|
|||
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
|
||||
void ShowPickupWidget(bool bShowWidget);
|
||||
virtual void Fire(const FVector& HitTarget);
|
||||
void Dropped();
|
||||
|
||||
// Textures for the weapon crosshairs
|
||||
|
||||
|
|
Loading…
Reference in New Issue