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();
	}
}
Пример #2
0
// 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);
	}
}
Пример #3
0
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();
	}

}
Пример #4
0
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;
}
Пример #5
0
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();
	}
}
Пример #6
0
AESpectatorPawn::AESpectatorPawn()
{
	// Set defaults
	SetActorEnableCollision(false);
	SetActorHiddenInGame(true);
}
Пример #7
0
AItem::AItem() : Super() {
	SetActorEnableCollision(false);
	SetGrade(1);
}