Skip to content

Commit

Permalink
Merge branch 'master' into patch-1
Browse files Browse the repository at this point in the history
  • Loading branch information
tomlooman authored Jan 21, 2021
2 parents 979f50f + b5b5432 commit 20fe933
Show file tree
Hide file tree
Showing 186 changed files with 169 additions and 119 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ Intermediate
Saved
DerivedDataCache
.vs
.idea
*.sdf
*.opensdf
*.sln
Expand Down
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2020 Tom Looman

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
41 changes: 16 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,65 +1,56 @@
Epic Survival Game Series
-------------------------

**Last updated for 4.24!**
**Last updated for 4.26!**

Third-person survival game for Unreal Engine 4 made entirely in C++. Originally built as a 6 section tutorial series, now available as open-source C++ sample project.

See [the main documentation page on the unreal engine Wiki](https://www.ue4community.wiki/Legacy/Survival_sample_game).
See [the main documentation page](https://www.tomlooman.com/survival-sample-game-for-ue4/) for walkthrough of many of the features.

![alt text](https://www.tomlooman.com/wp-content/uploads/2015/04/section6_equipment03.jpg)

![alt text](https://www.tomlooman.com/wp-content/uploads/2015/04/section6_advancedanimbp031.jpg)

For questions & feedback visit [the official thread on the unreal engine forums](https://forums.unrealengine.com/showthread.php?63678-Upcoming-C-Gameplay-Example-Series-Making-a-Survival-Game)

**Looking for a step by step guide?** I released my **[Unreal Engine 4 Mastery: Create Multiplayer Games with C++](https://www.udemy.com/unrealengine-cpp/?couponCode=TLGH14)!** Which includes two games teaching you C++, Networking for multiplayer and multiple AI including advanced behavior trees for ranged shooter AI.

Get the Udemy Course now and learn C++ for Unreal Engine 4: [DISCOUNT LINK](https://www.udemy.com/unrealengine-cpp/?couponCode=TLGH14)

### NEW: Mod Support
Includes two small mod examples including a Pink Rifle extension and Flashlight replacement mod. [Check out the Modding Sample Project for guidelines & cooker profile setup](https://www.ue4community.wiki/Legacy/Modding:_Adding_mod-support_to_your_Unreal_Engine_4_project)

Example commandline arg to load the Mod gamemode with the built-in level "CoopLandscape" in a cooked game build:
SurvivalGame.exe /Game/Maps/CoopLandscape_Map?game=/ExtendedRifleMod/SurvivalGameMode_PinkRifle.SurvivalGameMode_PinkRifle_C

There is currently no supporting UI to load up specific mod content, please note that the modding pipeline is a experimental and intended for early adopters only!

### Section 1
This section sets up the third person character movement with animation, object interaction, simple hunger system, all with networking support.

- [Documentation page](https://www.ue4community.wiki/Legacy/Survival_Sample_Game:_Section_1)
- [Forum Thread](https://forums.unrealengine.com/showthread.php?64833-Announcing-Section-1-for-Survival-Game)
- [Branch on Github](https://github.com/tomlooman/EpicSurvivalGameSeries/tree/Section-1)
- [Documentation page](https://www.tomlooman.com/survival-sample-game-for-ue4/section-one/)

### Section 2
Adds weapon support for the character, a flashlight, UT-style inventory with on-character visual representation of the carried items and deals with damage, death and respawns for players.

- [Documentation page](https://www.ue4community.wiki/Legacy/Survival_Sample_Game:_Section_2)
- [Forum Thread](https://forums.unrealengine.com/showthread.php?66263-Announcing-Section-2-for-Survival-Game)
- [Branch on Github](https://github.com/tomlooman/EpicSurvivalGameSeries/tree/Section-2)
- [Documentation page](https://www.tomlooman.com/survival-sample-game-for-ue4/section-two/)

### Section 3
Introduces AI "Zombie" enemy to our game using PawnSensing and Behavior Tree.

- [Documentation page](https://www.ue4community.wiki/Legacy/Survival_Sample_Game:_Section_3)
- [Forum Thread](https://forums.unrealengine.com/showthread.php?67859-Announcing-Section-3-for-Survival-Game)
- [Branch on Github](https://github.com/tomlooman/EpicSurvivalGameSeries/tree/Section-3)
- [Documentation page](https://www.tomlooman.com/survival-sample-game-for-ue4/section-three/)

### Section 4
Introduces a gameloop with enemies, items, scoring and a time of day.

- [Documentation page](https://www.ue4community.wiki/Legacy/Survival_Sample_Game:_Section_4)
- [Forum Thread](https://forums.unrealengine.com/showthread.php?69308-Announcing-Section-4-for-Survival-Game-Setting-up-the-survival-game-loop)
- [Branch on Github](https://github.com/tomlooman/EpicSurvivalGameSeries/tree/Section-4)

### Section 5
Introduces the ability to carry around objects like barriers and discusses game networking.

- [Documentation page](https://www.ue4community.wiki/Legacy/Survival_Sample_Game:_Section_5)
- [Forum Thread](https://forums.unrealengine.com/showthread.php?71057-Announcing-Section-5-of-Survival-Game-Networking-your-game)
- [Branch on Github](https://github.com/tomlooman/EpicSurvivalGameSeries/tree/Section-5)

### Section 6
The final section in the series focuses on bug fixing and a bit of polish to the existing features. This section is compatible with the 4.8 release.

- [Documentation page](https://www.ue4community.wiki/Legacy/Survival_Sample_Game:_Section_6)
- [Forum Thread](https://forums.unrealengine.com/showthread.php?72313-Announcing-Section-6-of-Survival-Game-Adding-some-polish)
- [Branch on Github](https://github.com/tomlooman/EpicSurvivalGameSeries/tree/Section-6)

### NEW: Mod Support
Includes two small mod examples including a Pink Rifle extension and Flashlight replacement mod. [Check out the Modding Sample Project for guidelines & cooker profile setup](https://www.tomlooman.com/add-mod-support-to-your-unreal-engine-4-game/)

Example commandline arg to load the Mod gamemode with the built-in level "CoopLandscape" in a cooked game build:
SurvivalGame.exe /Game/Maps/CoopLandscape_Map?game=/ExtendedRifleMod/SurvivalGameMode_PinkRifle.SurvivalGameMode_PinkRifle_C

There is currently no supporting UI to load up specific mod content, please note that the modding pipeline is a experimental and intended for early adopters only!
Binary file modified SurvivalGame/Binaries/Win64/UE4Editor-SurvivalGame.dll
Binary file not shown.
1 change: 0 additions & 1 deletion SurvivalGame/Config/DefaultEditor.ini
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,3 @@ bReplaceBlueprintWithClass=true
bDontLoadBlueprintOutsideEditor=true
bBlueprintIsNotBlueprintType=true


17 changes: 15 additions & 2 deletions SurvivalGame/Config/DefaultEngine.ini
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,20 @@ AppliedDefaultGraphicsPerformance=Maximum
; Our custom LocalPlayer class
LocalPlayerClassName=/Script/SurvivalGame.SLocalPlayer

; STEAM CONFIG START
[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")

[OnlineSubsystem]
DefaultPlatformService=Steam

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480 ; default app id for testing apps (can change to your own AppID if you have one)
;SteamAppId=480 ; this must be changed to your own ID for shipping builds eventually

; STEAM CONFIG END

[/Script/Engine.UserInterfaceSettings]
RenderFocusRule=NavigationOnly
DefaultCursor=None
Expand Down Expand Up @@ -44,7 +58,7 @@ r.DefaultFeature.AmbientOcclusionStaticFraction=True
r.DefaultFeature.AutoExposure=True
r.DefaultFeature.MotionBlur=False
r.DefaultFeature.LensFlare=False
r.DefaultFeature.AntiAliasing=1
r.DefaultFeature.AntiAliasing=2
r.EarlyZPass=3
r.EarlyZPassMovable=False
r.DBuffer=False
Expand Down Expand Up @@ -167,4 +181,3 @@ PhysXTreeRebuildRate=10
DefaultBroadphaseSettings=(bUseMBPOnClient=False,bUseMBPOnServer=False,bUseMBPOuterBounds=False,MBPBounds=(Min=(X=0.000000,Y=0.000000,Z=0.000000),Max=(X=0.000000,Y=0.000000,Z=0.000000),IsValid=0),MBPOuterBounds=(Min=(X=0.000000,Y=0.000000,Z=0.000000),Max=(X=0.000000,Y=0.000000,Z=0.000000),IsValid=0),MBPNumSubdivs=2)
ChaosSettings=(DefaultThreadingModel=DedicatedThread,DedicatedThreadTickMode=VariableCappedWithTarget,DedicatedThreadBufferMode=Double)


Binary file modified SurvivalGame/Content/AI/Zombie/Materials/M_Zombie_Body.uasset
Binary file not shown.
Binary file modified SurvivalGame/Content/AI/ZombieCharacter.uasset
Binary file not shown.
Binary file removed SurvivalGame/Content/Base/DebugGameMode.uasset
Binary file not shown.
Binary file modified SurvivalGame/Content/Base/MI_Dev_Mockup_01.uasset
Binary file not shown.
Binary file modified SurvivalGame/Content/Base/MI_Dev_Mockup_02.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified SurvivalGame/Content/Base/SurvivalCoopGameModeSetup.uasset
Binary file not shown.
Binary file not shown.
Binary file modified SurvivalGame/Content/Effects/P_AssaultRifle_MF.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified SurvivalGame/Content/Environment/LightPole.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified SurvivalGame/Content/Environment/Materials/M_Rock_Snowy.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified SurvivalGame/Content/Environment/Meshes/SM_DoorFrame.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified SurvivalGame/Content/Environment/Meshes/SM_PineTree.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified SurvivalGame/Content/Environment/Meshes/SM_WindowFrame.uasset
Binary file not shown.
Binary file modified SurvivalGame/Content/Environment/Skylight_TimeOfDayColor.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified SurvivalGame/Content/Environment/Textures/T_FullGrass_D.uasset
Binary file not shown.
Binary file modified SurvivalGame/Content/Environment/Textures/T_FullGrass_N.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified SurvivalGame/Content/Environment/Textures/T_Metal_Rust_D.uasset
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified SurvivalGame/Content/Items/ClassicBomb.uasset
Binary file not shown.
Binary file modified SurvivalGame/Content/Items/Materials/M_Black_Metal.uasset
Binary file not shown.
Binary file removed SurvivalGame/Content/Maps/ContainerCity.umap
Binary file not shown.
Binary file modified SurvivalGame/Content/Maps/ContainerCity_Art.umap
Binary file not shown.
Binary file modified SurvivalGame/Content/Maps/CoopLandscape_Map.umap
Binary file not shown.
Binary file modified SurvivalGame/Content/Maps/CoopLandscape_Map_BuiltData.uasset
Binary file not shown.
Binary file not shown.
Binary file modified SurvivalGame/Content/UI/SurvivalHUD.uasset
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"CreatedBy" : "Tom Looman",
"CreatedByURL" : "http://www.tomlooman.com",
"Description" : "My Extend Rifle Mod",
"EngineVersion" : "4.24.0",
"EngineVersion" : "4.26.0",
"Category" : "User Mod",
"EnabledByDefault" : true,

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"CreatedBy" : "Tom Looman",
"CreatedByURL" : "http://www.tomlooman.com",
"Description" : "My Flashlight Mod",
"EngineVersion" : "4.24.0",
"EngineVersion" : "4.26.0",
"Category" : "User Mod",
"EnabledByDefault" : true,

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,6 @@ EBTNodeResult::Type UBTTask_FindBotWaypoint::ExecuteTask(UBehaviorTreeComponent&
return EBTNodeResult::Failed;
}

ASBotWaypoint* CurrentWaypoint = MyController->GetWaypoint();
AActor* NewWaypoint = nullptr;

/* Iterate all the bot waypoints in the current level and find a new random waypoint to set as destination */
TArray<AActor*> AllWaypoints;
UGameplayStatics::GetAllActorsOfClass(MyController, ASBotWaypoint::StaticClass(), AllWaypoints);
Expand All @@ -31,7 +28,7 @@ EBTNodeResult::Type UBTTask_FindBotWaypoint::ExecuteTask(UBehaviorTreeComponent&

/* Find a new waypoint randomly by index (this can include the current waypoint) */
/* For more complex or human AI you could add some weights based on distance and other environmental conditions here */
NewWaypoint = AllWaypoints[FMath::RandRange(0, AllWaypoints.Num() - 1)];
AActor* NewWaypoint = AllWaypoints[FMath::RandRange(0, AllWaypoints.Num() - 1)];

/* Assign the new waypoint to the Blackboard */
if (NewWaypoint)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ EBTNodeResult::Type UBTTask_FindPatrolLocation::ExecuteTask(UBehaviorTreeCompone
return EBTNodeResult::Failed;
}

ASBotWaypoint* MyWaypoint = MyController->GetWaypoint();
AActor* MyWaypoint = MyController->GetWaypoint();
if (MyWaypoint)
{
/* Find a position that is close to the waypoint. We add a small random to this position to give build predictable patrol patterns */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ void ASZombieAIController::OnUnPossess()
}


void ASZombieAIController::SetWaypoint(ASBotWaypoint* NewWaypoint)
void ASZombieAIController::SetWaypoint(AActor* NewWaypoint)
{
if (BlackboardComp)
{
Expand All @@ -73,18 +73,18 @@ void ASZombieAIController::SetTargetEnemy(APawn* NewTarget)
}


ASBotWaypoint* ASZombieAIController::GetWaypoint()
AActor* ASZombieAIController::GetWaypoint() const
{
if (BlackboardComp)
{
return Cast<ASBotWaypoint>(BlackboardComp->GetValueAsObject(CurrentWaypointKeyName));
return Cast<AActor>(BlackboardComp->GetValueAsObject(CurrentWaypointKeyName));
}

return nullptr;
}


ASBaseCharacter* ASZombieAIController::GetTargetEnemy()
ASBaseCharacter* ASZombieAIController::GetTargetEnemy() const
{
if (BlackboardComp)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
#include "GameFramework/NavMovementComponent.h"
#include "Components/AudioComponent.h"
#include "SurvivalGame/SurvivalGame.h"
#include "GameFramework/PawnMovementComponent.h"
#include "Components/AudioComponent.h"
#include "Kismet/GameplayStatics.h"
#include "Sound/SoundCue.h"


// Sets default values
Expand Down Expand Up @@ -75,7 +79,7 @@ void ASZombieCharacter::BeginPlay()
if (PS)
{
PS->SetPlayerName("Bot");
PS->bIsABot = true;
PS->SetIsABot(true);
}
}

Expand Down
6 changes: 6 additions & 0 deletions SurvivalGame/Source/SurvivalGame/Private/Items/SBombActor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@


#include "Items/SBombActor.h"
#include "TimerManager.h"
#include "Particles/ParticleSystemComponent.h"
#include "Components/AudioComponent.h"
#include "GameFramework/Actor.h"
#include "Kismet/GameplayStatics.h"
#include "Sound/SoundCue.h"


ASBombActor::ASBombActor()
Expand Down Expand Up @@ -123,6 +126,9 @@ void ASBombActor::SimulateExplosion_Implementation()
ExplosionPCS->SetTemplate(ExplosionFX);
ExplosionPCS->ActivateSystem();
}

// For Blueprint
K2_SimulateExplosion();
}

float ASBombActor::TakeDamage(float Damage, struct FDamageEvent const& DamageEvent, class AController* EventInstigator, class AActor* DamageCauser)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,18 @@ USDamageType::USDamageType()
}


bool USDamageType::GetCanDieFrom()
bool USDamageType::GetCanDieFrom() const
{
return bCanDieFrom;
}


float USDamageType::GetHeadDamageModifier()
float USDamageType::GetHeadDamageModifier() const
{
return HeadDmgModifier;
}

float USDamageType::GetLimbDamageModifier()
float USDamageType::GetLimbDamageModifier() const
{
return LimbDmgModifier;
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

ASImpactEffect::ASImpactEffect()
{
bAutoDestroyWhenFinished = true;
SetAutoDestroyWhenFinished(true);
/* Can ever tick is required to trigger bAutoDestroyWhenFinished, which is checked in AActor::Tick */
PrimaryActorTick.bCanEverTick = true;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
#include "SurvivalGame/SurvivalGame.h"
#include "PhysicalMaterials/PhysicalMaterial.h"
#include "Net/UnrealNetwork.h"
#include "Particles/ParticleSystemComponent.h"
#include "Kismet/GameplayStatics.h"



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
#include "Components/SkeletalMeshComponent.h"
#include "Components/CapsuleComponent.h"
#include "Net/UnrealNetwork.h"
#include "Components/PawnNoiseEmitterComponent.h"
#include "Kismet/GameplayStatics.h"
#include "Sound/SoundCue.h"


ASBaseCharacter::ASBaseCharacter(const class FObjectInitializer& ObjectInitializer)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@


#include "Player/SCharacter.h"

#include "TimerManager.h"
#include "Items/SUsableActor.h"
#include "Items/SWeapon.h"
#include "Items/SWeaponPickup.h"
Expand All @@ -13,6 +15,7 @@
#include "Components/CapsuleComponent.h"
#include "SurvivalGame/SurvivalGame.h"
#include "GameFramework/DamageType.h"
#include "Camera/CameraComponent.h"


// Sets default values
Expand Down Expand Up @@ -198,7 +201,7 @@ void ASCharacter::MoveRight(float Val)
/*
Performs ray-trace to find closest looked-at UsableActor.
*/
ASUsableActor* ASCharacter::GetUsableInView()
ASUsableActor* ASCharacter::GetUsableInView() const
{
FVector CamLoc;
FRotator CamRot;
Expand All @@ -220,8 +223,6 @@ ASUsableActor* ASCharacter::GetUsableInView()
FHitResult Hit(ForceInit);
GetWorld()->LineTraceSingleByChannel(Hit, TraceStart, TraceEnd, ECC_Visibility, TraceParams);

//DrawDebugLine(GetWorld(), TraceStart, TraceEnd, FColor::Red, false, 1.0f);

return Cast<ASUsableActor>(Hit.GetActor());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,6 @@ ASPlayerCameraManager::ASPlayerCameraManager()
}


void ASPlayerCameraManager::BeginPlay()
{
Super::BeginPlay();

// ASCharacter* MyPawn = PCOwner ? Cast<ASCharacter>(PCOwner->GetPawn()) : nullptr;
// if (MyPawn)
// {
// /* Cache the offset Z value of the camera to maintain a correct offset while transition during crouches */
// DefaultCameraOffsetZ = MyPawn->GetCameraComponent()->GetRelativeTransform().GetLocation().Z;
// }
}


void ASPlayerCameraManager::UpdateCamera(float DeltaTime)
{
ASCharacter* MyPawn = PCOwner ? Cast<ASCharacter>(PCOwner->GetPawn()) : nullptr;
Expand Down
Loading

0 comments on commit 20fe933

Please sign in to comment.