Derive gravity and jump velocity from time in air and max height
This commit is contained in:
		
							parent
							
								
									493cca3fee
								
							
						
					
					
						commit
						057c929e5f
					
				
							
								
								
									
										
											BIN
										
									
								
								SwordNGun/Content/Characters/Protagonist/BP_NewProtag.uasset
									 (Stored with Git LFS)
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								SwordNGun/Content/Characters/Protagonist/BP_NewProtag.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.
										
									
								
							@ -205,11 +205,13 @@ void ASNGCharacterBase::Tick(float DeltaTime)
 | 
				
			|||||||
	// Debug
 | 
						// Debug
 | 
				
			||||||
	if(CharacterMovementDebug)
 | 
						if(CharacterMovementDebug)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
 | 
							float LateralSpeed = GetVelocity().Size2D();
 | 
				
			||||||
		FVector StartPos(GetActorLocation().X,
 | 
							FVector StartPos(GetActorLocation().X,
 | 
				
			||||||
						 GetActorLocation().Y,
 | 
											 GetActorLocation().Y,
 | 
				
			||||||
						GetActorLocation().Z - GetCapsuleComponent()->GetScaledCapsuleHalfHeight());
 | 
											GetActorLocation().Z - GetCapsuleComponent()->GetScaledCapsuleHalfHeight());
 | 
				
			||||||
		FVector ActorForward = UKismetMathLibrary::GetForwardVector(GetActorRotation());
 | 
							FVector ActorForward = UKismetMathLibrary::GetForwardVector(GetActorRotation());
 | 
				
			||||||
		DrawDebugDirectionalArrow(GetWorld(), StartPos, StartPos + (ActorForward * 100.0f),
 | 
							DrawDebugDirectionalArrow(GetWorld(),
 | 
				
			||||||
 | 
								StartPos, StartPos + (ActorForward * ((LateralSpeed / GetCharacterMovement()->MaxWalkSpeed) * 100.0f)),
 | 
				
			||||||
			10.0f, FColor::Blue, false, -1.0f, 0, 2.0f);
 | 
								10.0f, FColor::Blue, false, -1.0f, 0, 2.0f);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		FVector CurrInputDirection = GetInputAsWorldDirection();
 | 
							FVector CurrInputDirection = GetInputAsWorldDirection();
 | 
				
			||||||
@ -220,7 +222,7 @@ void ASNGCharacterBase::Tick(float DeltaTime)
 | 
				
			|||||||
		FString DebugMsg = FString::Printf(TEXT("MaxWalkSpeed: %f"), GetCharacterMovement()->MaxWalkSpeed);
 | 
							FString DebugMsg = FString::Printf(TEXT("MaxWalkSpeed: %f"), GetCharacterMovement()->MaxWalkSpeed);
 | 
				
			||||||
		GEngine->AddOnScreenDebugMessage(-1, 0.0f, FColor::Magenta, DebugMsg);
 | 
							GEngine->AddOnScreenDebugMessage(-1, 0.0f, FColor::Magenta, DebugMsg);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		float LateralSpeed = GetVelocity().Size2D();
 | 
							
 | 
				
			||||||
		DebugMsg = FString::Printf(TEXT("LateralSpeed: %f"), LateralSpeed);
 | 
							DebugMsg = FString::Printf(TEXT("LateralSpeed: %f"), LateralSpeed);
 | 
				
			||||||
		GEngine->AddOnScreenDebugMessage(-1, 0.0f, FColor::Magenta, DebugMsg);
 | 
							GEngine->AddOnScreenDebugMessage(-1, 0.0f, FColor::Magenta, DebugMsg);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
				
			|||||||
@ -4,21 +4,21 @@
 | 
				
			|||||||
#include "Components/SNGCharacterMovementComponent.h"
 | 
					#include "Components/SNGCharacterMovementComponent.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "Kismet/KismetMathLibrary.h"
 | 
					#include "Kismet/KismetMathLibrary.h"
 | 
				
			||||||
 | 
					#include "PhysicsEngine/PhysicsSettings.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
USNGCharacterMovementComponent::USNGCharacterMovementComponent()
 | 
					USNGCharacterMovementComponent::USNGCharacterMovementComponent()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	// Defaults
 | 
						// Defaults
 | 
				
			||||||
	DefaultGroundFriction = 8.0f;
 | 
						DefaultGroundFriction = 8.0f;
 | 
				
			||||||
	DefaultGravityScale = 1.0f;
 | 
					 | 
				
			||||||
	DefaultMaxWalkSpeed = 600.0f;
 | 
						DefaultMaxWalkSpeed = 600.0f;
 | 
				
			||||||
	DefaultRotationRate = FRotator(0.0f, 360.0f, 0.0f);
 | 
						DefaultRotationRate = FRotator(0.0f, 360.0f, 0.0f);
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// sprint
 | 
						// sprint
 | 
				
			||||||
	SprintingMaxWalkSpeed = 800.0f;
 | 
						SprintingMaxWalkSpeed = 1000.0f;
 | 
				
			||||||
	SprintLateralSpeedThreshold = 300.0f;
 | 
						SprintLateralSpeedThreshold = 500.0f;
 | 
				
			||||||
	SprintingRotationRate = FRotator(0.0f, 180.0f, 0.0f);
 | 
						SprintingRotationRate = FRotator(0.0f, 180.0f, 0.0f);
 | 
				
			||||||
	TimeToInitiateSprint = 4.0f;
 | 
						TimeToInitiateSprint = 2.0f;
 | 
				
			||||||
	WalkToSprintInterpSpeed = 1.0f;
 | 
						WalkToSprintInterpSpeed = 4.0f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// firing
 | 
						// firing
 | 
				
			||||||
	FiringMaxWalkSpeed = 300.0f;
 | 
						FiringMaxWalkSpeed = 300.0f;
 | 
				
			||||||
@ -26,11 +26,16 @@ USNGCharacterMovementComponent::USNGCharacterMovementComponent()
 | 
				
			|||||||
	// reloading
 | 
						// reloading
 | 
				
			||||||
	ReloadingMaxWalkSpeed = 300.0f;
 | 
						ReloadingMaxWalkSpeed = 300.0f;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// Set defaults dealing with jumping and being airborne
 | 
						// airborne defaults
 | 
				
			||||||
	DefaultJumpForce = 1000.0f;
 | 
						DefaultAirControl = 0.3f;
 | 
				
			||||||
	DefaultAirFriction = 150.0f;
 | 
					 | 
				
			||||||
	DefaultAirControl = 0.35;
 | 
					 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
						// jump
 | 
				
			||||||
 | 
						MaxJumpHeight = 250.0f;
 | 
				
			||||||
 | 
						DesiredJumpDuration = 0.75f;
 | 
				
			||||||
 | 
						ComputerGravityScaleAndJumpZVelocity();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
						// not used...yet
 | 
				
			||||||
	MinJumpHeight = 200.0f;
 | 
						MinJumpHeight = 200.0f;
 | 
				
			||||||
	MaxJumpTime = 0.2f;
 | 
						MaxJumpTime = 0.2f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -38,6 +43,13 @@ USNGCharacterMovementComponent::USNGCharacterMovementComponent()
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
	MinAllowedDashHeight = 175.0f;
 | 
						MinAllowedDashHeight = 175.0f;
 | 
				
			||||||
	MinAllowedAttackHeight = 175.0f;
 | 
						MinAllowedAttackHeight = 175.0f;
 | 
				
			||||||
 | 
						*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Character Movement component defaults
 | 
				
			||||||
 | 
						SetWalkableFloorAngle(45.622231f);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						AirControlBoostMultiplier = 0.0f;
 | 
				
			||||||
 | 
						AirControlBoostVelocityThreshold = 0.0f;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -50,16 +62,48 @@ void USNGCharacterMovementComponent::RestoreMovementDefaults()
 | 
				
			|||||||
	GravityScale = DefaultGravityScale;
 | 
						GravityScale = DefaultGravityScale;
 | 
				
			||||||
	RotationRate = DefaultRotationRate;
 | 
						RotationRate = DefaultRotationRate;
 | 
				
			||||||
	MaxWalkSpeed = DefaultMaxWalkSpeed;
 | 
						MaxWalkSpeed = DefaultMaxWalkSpeed;
 | 
				
			||||||
	BrakingDecelerationFalling = DefaultAirFriction;
 | 
					 | 
				
			||||||
	AirControl = DefaultAirControl;
 | 
						AirControl = DefaultAirControl;
 | 
				
			||||||
	JumpZVelocity = DefaultJumpForce;
 | 
						JumpZVelocity = DefaultJumpZVelocity;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if WITH_EDITOR
 | 
				
			||||||
 | 
					void USNGCharacterMovementComponent::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						Super::PostEditChangeProperty(PropertyChangedEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						const FProperty* PropertyThatChanged = PropertyChangedEvent.MemberProperty;
 | 
				
			||||||
 | 
						if (PropertyThatChanged && PropertyThatChanged->GetFName() == GET_MEMBER_NAME_CHECKED(USNGCharacterMovementComponent, MaxJumpHeight) ||
 | 
				
			||||||
 | 
							PropertyThatChanged && PropertyThatChanged->GetFName() == GET_MEMBER_NAME_CHECKED(USNGCharacterMovementComponent, DesiredJumpDuration))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							// Compute WalkableFloorZ from the Angle.
 | 
				
			||||||
 | 
							ComputerGravityScaleAndJumpZVelocity();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void USNGCharacterMovementComponent::PostLoad()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						Super::PostLoad();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Compute gravity scale and jump z velocity for first time
 | 
				
			||||||
 | 
						ComputerGravityScaleAndJumpZVelocity();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif // WITH_EDITOR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void USNGCharacterMovementComponent::OnSprintTimer()
 | 
					void USNGCharacterMovementComponent::OnSprintTimer()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	bIsSprinting = true;
 | 
						bIsSprinting = true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void USNGCharacterMovementComponent::ComputerGravityScaleAndJumpZVelocity()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						float HalfJumpDuration = DesiredJumpDuration / 2.0f;
 | 
				
			||||||
 | 
						DefaultJumpZVelocity = (2 * MaxJumpHeight) / HalfJumpDuration;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						float GameGravity = UPhysicsSettings::Get()->DefaultGravityZ;
 | 
				
			||||||
 | 
						float TargetGravity = (-2 * MaxJumpHeight) / (HalfJumpDuration * HalfJumpDuration);
 | 
				
			||||||
 | 
						DefaultGravityScale = TargetGravity / GameGravity;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void USNGCharacterMovementComponent::StartJump()
 | 
					void USNGCharacterMovementComponent::StartJump()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
 | 
				
			|||||||
@ -20,6 +20,8 @@ class SWORDNGUN_API USNGCharacterMovementComponent : public UCharacterMovementCo
 | 
				
			|||||||
public:
 | 
					public:
 | 
				
			||||||
	USNGCharacterMovementComponent();
 | 
						USNGCharacterMovementComponent();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						virtual void PostLoad() override;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 *	Instantly sets all movement parameters to their defaults values (i.e. ground friction to DefaultGroundFriction,
 | 
						 *	Instantly sets all movement parameters to their defaults values (i.e. ground friction to DefaultGroundFriction,
 | 
				
			||||||
	 *	MaxWalkSpeed to DefaultMaxWalkSpeed, etc.)
 | 
						 *	MaxWalkSpeed to DefaultMaxWalkSpeed, etc.)
 | 
				
			||||||
@ -33,39 +35,45 @@ public:
 | 
				
			|||||||
	UFUNCTION(BlueprintCallable)
 | 
						UFUNCTION(BlueprintCallable)
 | 
				
			||||||
	FORCEINLINE bool GetIsSprinting() { return bIsSprinting; }
 | 
						FORCEINLINE bool GetIsSprinting() { return bIsSprinting; }
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 | 
					#if WITH_EDITOR
 | 
				
			||||||
 | 
						virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
 | 
				
			||||||
 | 
					#endif // WITH_EDITOR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
	// default ground 
 | 
						// default ground 
 | 
				
			||||||
	/** Default friction when not performing any special actions and on the ground */
 | 
						/** Default friction when not performing any special actions and on the ground */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement.Ground.Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Ground|Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	float DefaultGroundFriction;
 | 
						float DefaultGroundFriction;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	/** Default ground walk speed when not performing any special actions */
 | 
						/** Default ground walk speed when not performing any special actions */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement.Ground.Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Ground|Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	float DefaultMaxWalkSpeed;
 | 
						float DefaultMaxWalkSpeed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/** Default ground walk speed when not performing any special actions */
 | 
						/** Default ground walk speed when not performing any special actions */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement.Ground.Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Ground|Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	FRotator DefaultRotationRate;
 | 
						FRotator DefaultRotationRate;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	// sprinting 
 | 
						// sprinting 
 | 
				
			||||||
	/** Ground walk speed when sprinting */
 | 
						/** Ground walk speed when sprinting */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement.Ground.Sprint", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Ground|Sprint", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	float SprintingMaxWalkSpeed;
 | 
						float SprintingMaxWalkSpeed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/** Lateral speed the player needs to maintain to stay in the sprinting state */
 | 
						/** Lateral speed the player needs to maintain to stay in the sprinting state */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement.Ground.Sprint", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Ground|Sprint", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	float SprintLateralSpeedThreshold;
 | 
						float SprintLateralSpeedThreshold;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/** Default ground walk speed when not performing any special actions */
 | 
						/** Default ground walk speed when not performing any special actions */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement.Ground.Sprint", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Ground|Sprint", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	FRotator SprintingRotationRate;
 | 
						FRotator SprintingRotationRate;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	/** How long after applying movement input should the character start sprinting? */
 | 
						/** How long after applying movement input should the character start sprinting? */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement.Ground.Sprint", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Ground|Sprint", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	float TimeToInitiateSprint;
 | 
						float TimeToInitiateSprint;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/** The speed in which the max walk speed to interpolated to the max sprint speed when a sprint has been initiated */
 | 
						/** The speed in which the max walk speed to interpolated to the max sprint speed when a sprint has been initiated */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement.Ground.Sprint", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Ground|Sprint", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	float WalkToSprintInterpSpeed;
 | 
						float WalkToSprintInterpSpeed;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	FTimerHandle TimerHandle_SprintTimer;
 | 
						FTimerHandle TimerHandle_SprintTimer;
 | 
				
			||||||
@ -77,34 +85,53 @@ protected:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// firing
 | 
						// firing
 | 
				
			||||||
	/** Ground walk speed when firing a ranged weapon */
 | 
						/** Ground walk speed when firing a ranged weapon */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement.Firing", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Firing", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	float FiringMaxWalkSpeed;
 | 
						float FiringMaxWalkSpeed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// reloading
 | 
						// reloading
 | 
				
			||||||
	/** Ground walk speed when reloading a ranged weapon */
 | 
						/** Ground walk speed when reloading a ranged weapon */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement.Reloading", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Reloading", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	float ReloadingMaxWalkSpeed;
 | 
						float ReloadingMaxWalkSpeed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// airborne
 | 
						// airborne
 | 
				
			||||||
	/** Gravity scale when not performing any special actions */
 | 
						/** Gravity scale when not performing any special actions */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement.Air.Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="SNG Character Movement|Air|Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	float DefaultGravityScale;
 | 
						float DefaultGravityScale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/** How much to dampen lateral velocities at the start of a jump */
 | 
				
			||||||
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Air|Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
 | 
						float LateralVelocityDampening;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 *	How high (Z) is the character able to reach when holding the jump button for the maximum allowed time.
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 *	This is used in conjunction with DesiredJumpDuration to derive DefaultGravityScale and JumpZVelocity.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Air|Jump", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
 | 
						float MaxJumpHeight;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 *	How long the character should be in the air for when performing a single jump and holding the jump button to reach
 | 
				
			||||||
 | 
						 *	the maximum jump height.
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 *	This is used in conjunction with MaxJumpHeight to derive DefaultGravityScale and JumpZVelocity.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Air|Jump", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
 | 
						float DesiredJumpDuration;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	/** Force to continuously apply to character when they are holding the jump button */
 | 
						/** Force to continuously apply to character when they are holding the jump button */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement.Air.Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="SNG Character Movement|Air|Jump", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	float DefaultJumpForce;
 | 
						float DefaultJumpZVelocity;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	/** Minimum height a character must reach before jump force is no longer applied even if the jump input is not being held */
 | 
						/** Minimum height a character must reach before jump force is no longer applied even if the jump input is not being held */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement.Air.Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Air|Jump", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	float MinJumpHeight;
 | 
						float MinJumpHeight;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/** Max time the jump button can be held to give character upward velocity */
 | 
						/** Max time the jump button can be held to give character upward velocity */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement.Air.Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Air|Jump", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	float MaxJumpTime;
 | 
						float MaxJumpTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/** How much to dampen lateral velocities at the start of a jump */
 | 
						void ComputerGravityScaleAndJumpZVelocity();
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement.Air.Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
					 | 
				
			||||||
	float LateralVelocityDampening;
 | 
					 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 *	Sets up character velocities and jump parameters like the jump timer	
 | 
						 *	Sets up character velocities and jump parameters like the jump timer	
 | 
				
			||||||
@ -119,19 +146,15 @@ protected:
 | 
				
			|||||||
	void AddJumpForce();
 | 
						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="Character Movement: SNG Air Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Air|Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	float DefaultAirFriction;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/** Default friction when not performing any special actions and in the air */
 | 
					 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Character Movement: SNG Air Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
					 | 
				
			||||||
	float DefaultAirControl;
 | 
						float DefaultAirControl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/** Minimum distance from the ground a character has to be to be able to perform an air dash */
 | 
						/** Minimum distance from the ground a character has to be to be able to perform an air dash */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Character Movement: SNG Air Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Air|Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	float MinAllowedDashHeight;
 | 
						float MinAllowedDashHeight;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/** Minimum distance from the ground a character has to be to be able to perform an air attack */
 | 
						/** Minimum distance from the ground a character has to be to be able to perform an air attack */
 | 
				
			||||||
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Character Movement: SNG Air Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
						UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="SNG Character Movement|Air|Defaults", meta=(ClampMin="0", UIMin="0"))
 | 
				
			||||||
	float MinAllowedAttackHeight;
 | 
						float MinAllowedAttackHeight;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	virtual void BeginPlay() override;
 | 
						virtual void BeginPlay() override;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user