Add more options to launch parameters and update jump so it uses our own launch function
This commit is contained in:
parent
811d3329cb
commit
32531fbcf4
BIN
SwordNGun/Content/Characters/Protagonist/Animations/NEW/Locomotion/Fighter_Jump_B_Montage.uasset
(Stored with Git LFS)
BIN
SwordNGun/Content/Characters/Protagonist/Animations/NEW/Locomotion/Fighter_Jump_B_Montage.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
SwordNGun/Content/Characters/Protagonist/Animations/NEW/Locomotion/Fighter_Jump_B_loop.uasset
(Stored with Git LFS)
Normal file
BIN
SwordNGun/Content/Characters/Protagonist/Animations/NEW/Locomotion/Fighter_Jump_B_loop.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
SwordNGun/Content/Characters/Protagonist/Animations/NEW/Locomotion/Fighter_Jump_F_Montage.uasset
(Stored with Git LFS)
BIN
SwordNGun/Content/Characters/Protagonist/Animations/NEW/Locomotion/Fighter_Jump_F_Montage.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
SwordNGun/Content/Characters/Protagonist/Animations/NEW/Locomotion/Fighter_Jump_Montage.uasset
(Stored with Git LFS)
BIN
SwordNGun/Content/Characters/Protagonist/Animations/NEW/Locomotion/Fighter_Jump_Montage.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
SwordNGun/Content/Characters/Protagonist/Character/OLD/Mesh/UE4_Mannequin_Skeleton.uasset
(Stored with Git LFS)
BIN
SwordNGun/Content/Characters/Protagonist/Character/OLD/Mesh/UE4_Mannequin_Skeleton.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
SwordNGun/Content/Maps/MovementTest.umap
(Stored with Git LFS)
BIN
SwordNGun/Content/Maps/MovementTest.umap
(Stored with Git LFS)
Binary file not shown.
@ -79,12 +79,16 @@ void USNGCharacterMovementComponent::RestoreMovementDefaults()
|
|||||||
void USNGCharacterMovementComponent::Dash()
|
void USNGCharacterMovementComponent::Dash()
|
||||||
{
|
{
|
||||||
FLaunchParameters LaunchParams;
|
FLaunchParameters LaunchParams;
|
||||||
|
LaunchParams.bOverrideX = true;
|
||||||
|
LaunchParams.bOverrideY = true;
|
||||||
|
LaunchParams.bOverrideZ = true;
|
||||||
LaunchParams.bOverrideMovementMode = false;
|
LaunchParams.bOverrideMovementMode = false;
|
||||||
LaunchParams.GroundFriction = DashGroundFriction;
|
LaunchParams.GroundFriction = DashGroundFriction;
|
||||||
LaunchParams.GravityScale = DashGravityScale;
|
LaunchParams.GravityScale = DashGravityScale;
|
||||||
LaunchParams.FloatTime = DashFloatTime;
|
LaunchParams.FloatTime = DashFloatTime;
|
||||||
LaunchParams.SlideTime = DashSlideTime;
|
LaunchParams.SlideTime = DashSlideTime;
|
||||||
|
|
||||||
|
|
||||||
// sets gravity and friction targets which will start interpolating after float time and slide time elapse respectively
|
// sets gravity and friction targets which will start interpolating after float time and slide time elapse respectively
|
||||||
TargetGravityScale = DefaultGravityScale;
|
TargetGravityScale = DefaultGravityScale;
|
||||||
TargetGroundFriction = DefaultGroundFriction;
|
TargetGroundFriction = DefaultGroundFriction;
|
||||||
@ -128,15 +132,43 @@ void USNGCharacterMovementComponent::OnSprintTimer()
|
|||||||
TargetMaxWalkSpeed = SprintingMaxWalkSpeed;
|
TargetMaxWalkSpeed = SprintingMaxWalkSpeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
void USNGCharacterMovementComponent::LaunchCharacter(FLaunchParameters& LaunchParams)
|
void USNGCharacterMovementComponent::LaunchCharacter(const FLaunchParameters LaunchParams)
|
||||||
{
|
{
|
||||||
GroundFriction = LaunchParams.GroundFriction;
|
Velocity *= LaunchParams.VelocityScale;
|
||||||
GravityScale = LaunchParams.GravityScale;
|
|
||||||
|
//
|
||||||
|
if(LaunchParams.bOverrideX)
|
||||||
|
{
|
||||||
|
Velocity.X = LaunchParams.Velocity.X;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Velocity.X += LaunchParams.Velocity.X;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(LaunchParams.bOverrideY)
|
||||||
|
{
|
||||||
|
Velocity.Y = LaunchParams.Velocity.Y;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Velocity.Y += LaunchParams.Velocity.Y;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(LaunchParams.bOverrideZ)
|
||||||
|
{
|
||||||
|
Velocity.Z = LaunchParams.Velocity.Z;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Velocity.Z += LaunchParams.Velocity.Z;
|
||||||
|
}
|
||||||
|
|
||||||
|
GroundFriction = LaunchParams.bUseDefaultGroundFriction ? DefaultGroundFriction : LaunchParams.GroundFriction;
|
||||||
|
GravityScale = LaunchParams.bUseDefaultGravityScale ? DefaultGravityScale : LaunchParams.GravityScale;
|
||||||
FloatTime = LaunchParams.FloatTime;
|
FloatTime = LaunchParams.FloatTime;
|
||||||
SlideTime = LaunchParams.SlideTime;
|
SlideTime = LaunchParams.SlideTime;
|
||||||
|
|
||||||
Velocity = LaunchParams.Velocity;
|
|
||||||
|
|
||||||
if(LaunchParams.bOverrideMovementMode)
|
if(LaunchParams.bOverrideMovementMode)
|
||||||
{
|
{
|
||||||
SetMovementMode(LaunchParams.NewMovementMode);
|
SetMovementMode(LaunchParams.NewMovementMode);
|
||||||
@ -153,25 +185,32 @@ void USNGCharacterMovementComponent::ComputeGravityScaleAndJumpZVelocity()
|
|||||||
DefaultGravityScale = TargetGravity / GameGravity;
|
DefaultGravityScale = TargetGravity / GameGravity;
|
||||||
}
|
}
|
||||||
|
|
||||||
void USNGCharacterMovementComponent::StartJump()
|
bool USNGCharacterMovementComponent::DoJump(bool bReplayingMoves)
|
||||||
{
|
{
|
||||||
/*
|
if ( CharacterOwner && CharacterOwner->CanJump() )
|
||||||
JumpTimer = MaxJumpTime;
|
|
||||||
|
|
||||||
Velocity = FVector(Velocity.X * LateralVelocityDampening, Velocity.Y * LateralVelocityDampening, 0.0f);
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
void USNGCharacterMovementComponent::AddJumpForce()
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
if(JumpTimer > 0.0f)
|
|
||||||
{
|
{
|
||||||
Velocity = FVector(Velocity.X, Velocity.Y, Velocity.Z + (JumpForce * GetWorld()->DeltaTimeSeconds));
|
// Don't jump if we can't move up/down.
|
||||||
|
if (!bConstrainToPlane || FMath::Abs(PlaneConstraintNormal.Z) != 1.f)
|
||||||
|
{
|
||||||
|
|
||||||
JumpTimer = FMath::Max(JumpTimer - GetWorld()->DeltaTimeSeconds, 0.0f);
|
FLaunchParameters JumpParams;
|
||||||
|
JumpParams.Velocity.Z = DefaultJumpZVelocity;
|
||||||
|
JumpParams.bOverrideX = false;
|
||||||
|
JumpParams.bOverrideY = false;
|
||||||
|
JumpParams.bOverrideZ = true;
|
||||||
|
|
||||||
|
JumpParams.bUseDefaultGroundFriction = true;
|
||||||
|
JumpParams.bUseDefaultGravityScale = true;
|
||||||
|
|
||||||
|
JumpParams.bOverrideMovementMode = true;
|
||||||
|
JumpParams.NewMovementMode = EMovementMode::MOVE_Falling;
|
||||||
|
|
||||||
|
LaunchCharacter(JumpParams);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void USNGCharacterMovementComponent::InterpolateMovementParameters(float DeltaTime)
|
void USNGCharacterMovementComponent::InterpolateMovementParameters(float DeltaTime)
|
||||||
|
@ -11,39 +11,87 @@ struct FLaunchParameters
|
|||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
/** Velocity */
|
/** Velocity to either add or set for this character */
|
||||||
UPROPERTY()
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||||
FVector Velocity;
|
FVector Velocity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* How much to scale current velocity by. Set all components to 1 if you want the character to keep whatever
|
||||||
|
* velocity they currently have.
|
||||||
|
*/
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||||
|
FVector VelocityScale;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Should the X component of character's velocity be overriden with Velocity parameter or added?
|
||||||
|
* Default is false which means Velocity X component will be added to current character's velocity
|
||||||
|
*/
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||||
|
bool bOverrideX;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Should the Y component of character's velocity be overriden with Velocity parameter or added?
|
||||||
|
* Default is false which means Velocity Y component will be added to current character's velocity
|
||||||
|
*/
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||||
|
bool bOverrideY;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Should the Z component of character's velocity be overriden with Velocity parameter or added?
|
||||||
|
* Default is false which means Velocity Z component will be added to current character's velocity
|
||||||
|
*/
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||||
|
bool bOverrideZ;
|
||||||
|
|
||||||
/** Should the character's movement mode change after being launched? */
|
/** Should the character's movement mode change after being launched? */
|
||||||
UPROPERTY(BlueprintReadWrite)
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||||
bool bOverrideMovementMode;
|
bool bOverrideMovementMode;
|
||||||
|
|
||||||
/** What the character's movement mode will be set to after launch. This will only be set is bOverrideMovementMode is true. */
|
/** What the character's movement mode will be set to after launch. This will only be set is bOverrideMovementMode is true. */
|
||||||
UPROPERTY(BlueprintReadWrite)
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||||
TEnumAsByte<EMovementMode> NewMovementMode;
|
TEnumAsByte<EMovementMode> NewMovementMode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GroundFriction will be overriden to DefaultGroundFriction as specified in the character movement
|
||||||
|
* component instead of what is supplied in this struct.
|
||||||
|
*/
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||||
|
bool bUseDefaultGroundFriction;
|
||||||
|
|
||||||
/** The ground friction that should be immediately applied when the character is launched */
|
/** The ground friction that should be immediately applied when the character is launched */
|
||||||
UPROPERTY(BlueprintReadWrite)
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||||
float GroundFriction;
|
float GroundFriction;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GravityScale will be overriden to DefaultGravityScale as specified in the character movement
|
||||||
|
* component instead of what is supplied in this struct.
|
||||||
|
*/
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||||
|
bool bUseDefaultGravityScale;
|
||||||
|
|
||||||
/** The gravity scale that should be immediately applied when the character is launched */
|
/** The gravity scale that should be immediately applied when the character is launched */
|
||||||
UPROPERTY(BlueprintReadWrite)
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||||
float GravityScale;
|
float GravityScale;
|
||||||
|
|
||||||
/** The float time that should be immediately applied when the character is launched */
|
/** The float time that should be immediately applied when the character is launched */
|
||||||
UPROPERTY(BlueprintReadWrite)
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||||
float FloatTime;
|
float FloatTime;
|
||||||
|
|
||||||
/** The slide time that should be immediately applied when the character is launched */
|
/** The slide time that should be immediately applied when the character is launched */
|
||||||
UPROPERTY(BlueprintReadWrite)
|
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||||
float SlideTime;
|
float SlideTime;
|
||||||
|
|
||||||
FLaunchParameters()
|
FLaunchParameters()
|
||||||
: Velocity(FVector::ZeroVector)
|
: Velocity(FVector::ZeroVector)
|
||||||
|
, VelocityScale(FVector::OneVector)
|
||||||
|
, bOverrideX(false)
|
||||||
|
, bOverrideY(false)
|
||||||
|
, bOverrideZ(false)
|
||||||
, bOverrideMovementMode(false)
|
, bOverrideMovementMode(false)
|
||||||
, NewMovementMode(EMovementMode::MOVE_Walking)
|
, NewMovementMode(EMovementMode::MOVE_Walking)
|
||||||
|
, bUseDefaultGroundFriction(false)
|
||||||
, GroundFriction(8.0f)
|
, GroundFriction(8.0f)
|
||||||
|
, bUseDefaultGravityScale(false)
|
||||||
, GravityScale(1.0f)
|
, GravityScale(1.0f)
|
||||||
, FloatTime(0.0f)
|
, FloatTime(0.0f)
|
||||||
, SlideTime(0.0f)
|
, SlideTime(0.0f)
|
||||||
@ -74,6 +122,21 @@ public:
|
|||||||
UFUNCTION(BlueprintCallable)
|
UFUNCTION(BlueprintCallable)
|
||||||
void RestoreMovementDefaults();
|
void RestoreMovementDefaults();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Sets and scales current character's velocity and sets other movement values specified in the passed LaunchParams.
|
||||||
|
* The order of operations for updating velocity is:
|
||||||
|
* 1) Multiply current velocity by VelocityScale
|
||||||
|
* 2) Will either set or add to current velocity components with the value specified in LaunchParams.Velocity
|
||||||
|
* @param LaunchParams - settings on how this character should be launched. See documentation for FLaunchParameters
|
||||||
|
* for more information.
|
||||||
|
*/
|
||||||
|
UFUNCTION(BlueprintCallable, meta=(AutoCreateRefTerm="LaunchParams"))
|
||||||
|
void LaunchCharacter(const FLaunchParameters LaunchParams);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Sets up launch parameters and character movement parameter targets and finally launches the character
|
||||||
|
* for the character to dash.
|
||||||
|
*/
|
||||||
UFUNCTION(BlueprintCallable)
|
UFUNCTION(BlueprintCallable)
|
||||||
void Dash();
|
void Dash();
|
||||||
|
|
||||||
@ -180,8 +243,6 @@ protected:
|
|||||||
UPROPERTY(BlueprintReadWrite)
|
UPROPERTY(BlueprintReadWrite)
|
||||||
float FloatTime;
|
float FloatTime;
|
||||||
|
|
||||||
void LaunchCharacter(FLaunchParameters& LaunchParams);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* How high (Z) is the character able to reach when holding the jump button for the maximum allowed time.
|
* How high (Z) is the character able to reach when holding the jump button for the maximum allowed time.
|
||||||
*
|
*
|
||||||
@ -213,17 +274,7 @@ protected:
|
|||||||
|
|
||||||
void ComputeGravityScaleAndJumpZVelocity();
|
void ComputeGravityScaleAndJumpZVelocity();
|
||||||
|
|
||||||
/**
|
virtual bool DoJump(bool bReplayingMoves) override;
|
||||||
* Sets up character velocities and jump parameters like the jump timer
|
|
||||||
*/
|
|
||||||
UFUNCTION(BlueprintCallable)
|
|
||||||
void StartJump();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Continuously applies an upward force to the character as the jump button is held down
|
|
||||||
*/
|
|
||||||
UFUNCTION(BlueprintCallable)
|
|
||||||
void AddJumpForce();
|
|
||||||
|
|
||||||
/** Default friction when not performing any special actions and in the air */
|
/** Default friction when not performing any special actions and in the air */
|
||||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Defaults|Air", meta=(ClampMin="0", UIMin="0"))
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Defaults|Air", meta=(ClampMin="0", UIMin="0"))
|
||||||
|
Loading…
Reference in New Issue
Block a user