forked from vblanco20-1/UnrealJetpack
-
Notifications
You must be signed in to change notification settings - Fork 2
/
JetpackCharacterMovement.cpp
59 lines (43 loc) · 1.4 KB
/
JetpackCharacterMovement.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
#include "ShooterGame.h"
UJetpackCharacterMovement::UJetpackCharacterMovement(const class FPostConstructInitializeProperties& PCIP)
: Super(PCIP)
{
JetpackStrenght = 3000;
JetpackMaxFuel = 2;
JetpackRefuelRate = 0.5;
Jetpackfuel = 0;
}
void UJetpackCharacterMovement::PerformMovement(float DeltaTime)
{
// get the owner
AJetpackCharacter* ShooterCharacterOwner = Cast<AJetpackCharacter>(PawnOwner);
if (ShooterCharacterOwner)
{
// using jetpack, so fly up
if(ShooterCharacterOwner->bIsUsingJetpack)
{
// make fuel decrease, as you are flying
Jetpackfuel -= DeltaTime;
// jetpack is depleted, disable it and stop flying
if(Jetpackfuel < 0)
{
ShooterCharacterOwner->StopJetpack();
ShooterCharacterOwner->DisableJetpack();
}
// Add some acceleration to the Upward velocity, so the character is propulsed upwards
Velocity.Z += JetpackStrenght*DeltaTime ;
}
else if(ShooterCharacterOwner->bIsJetpackEnabled == true)
{
// only refuel the jetpack when you are not flying and the jetpack is enabled
Jetpackfuel+= DeltaTime*JetpackRefuelRate;
if(Jetpackfuel >= JetpackMaxFuel)
{
Jetpackfuel = JetpackMaxFuel;
}
}
}
// do the CharacterMovement version of PerformMovement, this function is the one that does the normal movement calculations.
Super::PerformMovement(DeltaTime);
}