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()
|
void ABlasterCharacter::Eliminated()
|
||||||
{
|
{
|
||||||
|
if (Combat && Combat->EquippedWeapon)
|
||||||
|
{
|
||||||
|
Combat->EquippedWeapon->Dropped();
|
||||||
|
}
|
||||||
MulticastEliminated();
|
MulticastEliminated();
|
||||||
GetWorldTimerManager().SetTimer(EliminationTimer, this, &ABlasterCharacter::EliminationTimerFinished, EliminationDelay);
|
GetWorldTimerManager().SetTimer(EliminationTimer, this, &ABlasterCharacter::EliminationTimerFinished, EliminationDelay);
|
||||||
}
|
}
|
||||||
|
@ -123,6 +127,7 @@ void ABlasterCharacter::MulticastEliminated_Implementation()
|
||||||
bEliminated = true;
|
bEliminated = true;
|
||||||
PlayEliminatedMontage();
|
PlayEliminatedMontage();
|
||||||
|
|
||||||
|
// Start dissolve effect
|
||||||
if (DissolveMaterialInstance)
|
if (DissolveMaterialInstance)
|
||||||
{
|
{
|
||||||
DynamicDissolveMaterialInstance = UMaterialInstanceDynamic::Create(DissolveMaterialInstance, this);
|
DynamicDissolveMaterialInstance = UMaterialInstanceDynamic::Create(DissolveMaterialInstance, this);
|
||||||
|
@ -131,6 +136,18 @@ void ABlasterCharacter::MulticastEliminated_Implementation()
|
||||||
DynamicDissolveMaterialInstance->SetScalarParameterValue(TEXT("Glow"), 200.f);
|
DynamicDissolveMaterialInstance->SetScalarParameterValue(TEXT("Glow"), 200.f);
|
||||||
}
|
}
|
||||||
StartDissolve();
|
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()
|
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()
|
void UCombatComponent::Fire()
|
||||||
{
|
{
|
||||||
if (bCanFire)
|
if (bCanFire)
|
||||||
|
@ -295,3 +286,18 @@ void UCombatComponent::EquipWeapon(AWeapon* WeaponToEquip)
|
||||||
Character->GetCharacterMovement()->bOrientRotationToMovement = false;
|
Character->GetCharacterMovement()->bOrientRotationToMovement = false;
|
||||||
Character->bUseControllerRotationYaw = true;
|
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:
|
case EWeaponState::EWS_Equipped:
|
||||||
ShowPickupWidget(false);
|
ShowPickupWidget(false);
|
||||||
GetAreaSphere()->SetCollisionEnabled(ECollisionEnabled::NoCollision);
|
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;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -99,6 +111,14 @@ void AWeapon::OnRep_WeaponState()
|
||||||
{
|
{
|
||||||
case EWeaponState::EWS_Equipped:
|
case EWeaponState::EWS_Equipped:
|
||||||
ShowPickupWidget(false);
|
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;
|
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;
|
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
|
||||||
void ShowPickupWidget(bool bShowWidget);
|
void ShowPickupWidget(bool bShowWidget);
|
||||||
virtual void Fire(const FVector& HitTarget);
|
virtual void Fire(const FVector& HitTarget);
|
||||||
|
void Dropped();
|
||||||
|
|
||||||
// Textures for the weapon crosshairs
|
// Textures for the weapon crosshairs
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue