void AMMO_Character::Die() { bIsDead = true; AnimInstance->bHasDied = true; DeathRotation = Player_SkeletalMeshComponent->GetComponentRotation(); Cast<UPrimitiveComponent>(GetRootComponent())->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore); Cast<UPrimitiveComponent>(GetRootComponent())->SetCollisionEnabled(ECollisionEnabled::NoCollision); FindComponentByClass<class USkeletalMeshComponent>()->SetCollisionEnabled(ECollisionEnabled::NoCollision); FindComponentByClass<class USkeletalMeshComponent>()->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore); SetActorEnableCollision(false); if (LockedTarget) { Cast<AMMO_Mob_Character>(LockedTarget)->MyLockOnWidget->PlayersLockedOn[LockOnID] = -1; LockedTarget = nullptr; MainCam->Activate(); LockOnCam->Deactivate(); } }
// Makes the character die void AMurphysLawCharacter::Die() { Dead = true; IMurphysLawIController* PlayerController = Cast<IMurphysLawIController>(Controller); if (PlayerController) { PlayerController->OnKilled(TimeToRespawn); } // Disable collisions for the actor as he's dead SetActorEnableCollision(false); // Hide the current weapon of the player before destroying it if (HasWeaponEquipped()) { GetEquippedWeapon()->SetActorHiddenInGame(true); Inventory->GetFullMeshWeapon(CurrentWeaponIndex)->SetActorHiddenInGame(true); } }
void ALonelyMenCharacter::PlayDie(float KillingDamge, FDamageEvent const& DamageEvent, AController* killer, AActor* DamageCauser) { nCurHealth = FMath::Min(0, nCurHealth); if (bIsDying) return; //play death sound //remove DestroyAllInventory(); DetachFromControllerPendingDestroy(); //disable collison klon capsule GetCapsuleComponent()->SetCollisionEnabled(ECollisionEnabled::NoCollision); GetCapsuleComponent()->SetCollisionResponseToAllChannels(ECR_Ignore); if (GetMesh()) { static FName CollisonProfileName(TEXT("Radoll")); GetMesh()->SetCollisionProfileName(CollisonProfileName); } SetActorEnableCollision(true); //play death anim float DeathAnimDuration = PlayAnimMontage(DeathAnim); //Ragdoll if (DeathAnimDuration > 0) { FTimerHandle TimerHandle; GetWorldTimerManager().SetTimer(TimerHandle, this, &ANonPlayerCharacter::SetRagDollPhysics, FMath::Min(0.1f, DeathAnimDuration), false); } else { SetRagDollPhysics(); } }
ANavLinkProxy::ANavLinkProxy(const class FPostConstructInitializeProperties& PCIP) : Super(PCIP) { TSubobjectPtr<USceneComponent> SceneComponent = PCIP.CreateDefaultSubobject<USceneComponent>(this, TEXT("PositionComponent")); RootComponent = SceneComponent; #if WITH_EDITORONLY_DATA EdRenderComp = PCIP.CreateDefaultSubobject<UNavLinkRenderingComponent>(this, TEXT("EdRenderComp")); EdRenderComp->PostPhysicsComponentTick.bCanEverTick = false; EdRenderComp->AttachParent = RootComponent; #endif // WITH_EDITORONLY_DATA #if WITH_EDITOR SpriteComponent = PCIP.CreateEditorOnlyDefaultSubobject<UBillboardComponent>(this, TEXT("Sprite")); if (!IsRunningCommandlet() && (SpriteComponent != NULL)) { static ConstructorHelpers::FObjectFinderOptional<UTexture2D> SpriteTexture(TEXT("/Engine/EditorResources/AI/S_NavLink")); SpriteComponent->Sprite = SpriteTexture.Get(); SpriteComponent->bHiddenInGame = true; SpriteComponent->bVisible = true; SpriteComponent->AttachParent = RootComponent; SpriteComponent->SetAbsolute(false, false, true); } #endif SmartLinkComp = PCIP.CreateDefaultSubobject<USmartNavLinkComponent>(this, TEXT("SmartLinkComp")); SmartLinkComp->SetNavigationRelevancy(false); SmartLinkComp->SetMoveReachedLink(this, &ANavLinkProxy::NotifySmartLinkReached); bSmartLinkIsRelevant = false; PointLinks.Add(FNavigationLink()); SetActorEnableCollision(false); bCanBeDamaged = false; }
void ANimModCharacter::OnDeath(float KillingDamage, struct FDamageEvent const& DamageEvent, class APawn* PawnInstigator, class AActor* DamageCauser) { if (bIsDying) { return; } bReplicateMovement = false; bTearOff = true; bIsDying = true; if (Role == ROLE_Authority) { ReplicateHit(KillingDamage, DamageEvent, PawnInstigator, DamageCauser, true); // play the force feedback effect on the client player controller APlayerController* PC = Cast<APlayerController>(Controller); if (PC && DamageEvent.DamageTypeClass) { UNimModDamageType *DamageType = Cast<UNimModDamageType>(DamageEvent.DamageTypeClass->GetDefaultObject()); if (DamageType && DamageType->KilledForceFeedback) { PC->ClientPlayForceFeedback(DamageType->KilledForceFeedback, false, "Damage"); } } } // cannot use IsLocallyControlled here, because even local client's controller may be NULL here if (GetNetMode() != NM_DedicatedServer && DeathSound && Mesh1P && Mesh1P->IsVisible()) { UGameplayStatics::PlaySoundAtLocation(this, DeathSound, GetActorLocation()); } ANimModPlayerController *controller = GetNimModPlayerController(); if (controller) { ANimModPlayerCameraManager *cameraManager = controller->GetNimModPlayerCameraManager(); if (cameraManager) cameraManager->ResetFOV(); } // remove all weapons DestroyInventory(); // switch back to 3rd person view UpdatePawnMeshes(); DetachFromControllerPendingDestroy(); StopAllAnimMontages(); if (LowHealthWarningPlayer && LowHealthWarningPlayer->IsPlaying()) { LowHealthWarningPlayer->Stop(); } if (RunLoopAC) { RunLoopAC->Stop(); } // disable collisions on capsule GetCapsuleComponent()->SetCollisionEnabled(ECollisionEnabled::NoCollision); GetCapsuleComponent()->SetCollisionResponseToAllChannels(ECR_Ignore); if (GetMesh()) { static FName CollisionProfileName(TEXT("Ragdoll")); GetMesh()->SetCollisionProfileName(CollisionProfileName); } SetActorEnableCollision(true); // Death anim float DeathAnimDuration = PlayAnimMontage(DeathAnim); // Ragdoll if (DeathAnimDuration > 0.f) { // Use a local timer handle as we don't need to store it for later but we don't need to look for something to clear FTimerHandle TimerHandle; GetWorldTimerManager().SetTimer(TimerHandle, this, &ANimModCharacter::SetRagdollPhysics, FMath::Min(0.1f, DeathAnimDuration), false); } else { SetRagdollPhysics(); } }
AESpectatorPawn::AESpectatorPawn() { // Set defaults SetActorEnableCollision(false); SetActorHiddenInGame(true); }
AItem::AItem() : Super() { SetActorEnableCollision(false); SetGrade(1); }