diff --git a/Content/Characters/Mannequins/Animations/ABP_CombatCharacter.uasset b/Content/Characters/Mannequins/Animations/ABP_CombatCharacter.uasset index b2fce7e1..42448ab4 100644 Binary files a/Content/Characters/Mannequins/Animations/ABP_CombatCharacter.uasset and b/Content/Characters/Mannequins/Animations/ABP_CombatCharacter.uasset differ diff --git a/Content/CombatSystem/Blueprints/Actor/BP_ToughSword.uasset b/Content/CombatSystem/Blueprints/Actor/BP_ToughSword.uasset index 0ba055ff..fafee197 100644 Binary files a/Content/CombatSystem/Blueprints/Actor/BP_ToughSword.uasset and b/Content/CombatSystem/Blueprints/Actor/BP_ToughSword.uasset differ diff --git a/Content/CombatSystem/Blueprints/BP_CombatCharacter.uasset b/Content/CombatSystem/Blueprints/BP_CombatCharacter.uasset index ab8dd0e2..b098aa75 100644 Binary files a/Content/CombatSystem/Blueprints/BP_CombatCharacter.uasset and b/Content/CombatSystem/Blueprints/BP_CombatCharacter.uasset differ diff --git a/Content/CombatSystem/CourseFiles/Animations/LightSword/Locomotion/LightSword_BS.uasset b/Content/CombatSystem/CourseFiles/Animations/LightSword/Locomotion/LightSword_BS.uasset index 454626b0..123655a8 100644 Binary files a/Content/CombatSystem/CourseFiles/Animations/LightSword/Locomotion/LightSword_BS.uasset and b/Content/CombatSystem/CourseFiles/Animations/LightSword/Locomotion/LightSword_BS.uasset differ diff --git a/Content/CombatSystem/Input/Actions/IA_AttackAssist.uasset b/Content/CombatSystem/Input/Actions/IA_AttackAssist.uasset new file mode 100644 index 00000000..688e5646 Binary files /dev/null and b/Content/CombatSystem/Input/Actions/IA_AttackAssist.uasset differ diff --git a/Content/CombatSystem/Input/Actions/IA_HeavyAttack.uasset b/Content/CombatSystem/Input/Actions/IA_HeavyAttack.uasset new file mode 100644 index 00000000..1c620ff2 Binary files /dev/null and b/Content/CombatSystem/Input/Actions/IA_HeavyAttack.uasset differ diff --git a/Content/CombatSystem/Input/Actions/IA_Sprint.uasset b/Content/CombatSystem/Input/Actions/IA_Sprint.uasset new file mode 100644 index 00000000..b6034887 Binary files /dev/null and b/Content/CombatSystem/Input/Actions/IA_Sprint.uasset differ diff --git a/Content/CombatSystem/Input/Actions/IA_ToggleCombat.uasset b/Content/CombatSystem/Input/Actions/IA_ToggleCombat.uasset index 1f284d3b..5eb215f4 100644 Binary files a/Content/CombatSystem/Input/Actions/IA_ToggleCombat.uasset and b/Content/CombatSystem/Input/Actions/IA_ToggleCombat.uasset differ diff --git a/Content/CombatSystem/Input/Actions/IA_ToggleWalk.uasset b/Content/CombatSystem/Input/Actions/IA_ToggleWalk.uasset new file mode 100644 index 00000000..54fa9f76 Binary files /dev/null and b/Content/CombatSystem/Input/Actions/IA_ToggleWalk.uasset differ diff --git a/Content/CombatSystem/Input/IMC_Default.uasset b/Content/CombatSystem/Input/IMC_Default.uasset index 84d10454..02c4ecd5 100644 Binary files a/Content/CombatSystem/Input/IMC_Default.uasset and b/Content/CombatSystem/Input/IMC_Default.uasset differ diff --git a/Content/__ExternalActors__/Maps/ThirdPersonMap/7/YS/ZFVZV5RGVXFDJDFNO8TVNW.uasset b/Content/__ExternalActors__/Maps/ThirdPersonMap/7/YS/ZFVZV5RGVXFDJDFNO8TVNW.uasset index 1758e104..74cc1a70 100644 Binary files a/Content/__ExternalActors__/Maps/ThirdPersonMap/7/YS/ZFVZV5RGVXFDJDFNO8TVNW.uasset and b/Content/__ExternalActors__/Maps/ThirdPersonMap/7/YS/ZFVZV5RGVXFDJDFNO8TVNW.uasset differ diff --git a/Source/D1/Actor/BaseWeapon.h b/Source/D1/Actor/BaseWeapon.h index 5c9605e9..589b4978 100644 --- a/Source/D1/Actor/BaseWeapon.h +++ b/Source/D1/Actor/BaseWeapon.h @@ -4,7 +4,7 @@ #include "CoreMinimal.h" #include "Actor/BaseEquippable.h" -#include "Enums/CombatType.h" +#include "Definitions/GameEnums.h" #include "Animation/CombatAnimInstance.h" #include "Components/StateManagerComponent.h" #include "BaseWeapon.generated.h" diff --git a/Source/D1/Animation/CombatAnimInstance.h b/Source/D1/Animation/CombatAnimInstance.h index f1a6ed3b..ff0d4814 100644 --- a/Source/D1/Animation/CombatAnimInstance.h +++ b/Source/D1/Animation/CombatAnimInstance.h @@ -5,7 +5,7 @@ #include "CoreMinimal.h" #include "Animation/AnimInstance.h" #include "Interface/IAnimInstance.h" -#include "Enums/CombatType.h" +#include "Definitions/GameEnums.h" #include "CombatAnimInstance.generated.h" /** diff --git a/Source/D1/CombatCharacter.cpp b/Source/D1/CombatCharacter.cpp index c4239375..bb633af3 100644 --- a/Source/D1/CombatCharacter.cpp +++ b/Source/D1/CombatCharacter.cpp @@ -36,6 +36,9 @@ ACombatCharacter::ACombatCharacter() // Note: For faster iteration times these variables, and many more, can be tweaked in the Character Blueprint // instead of recompiling to adjust them + GetCharacterMovement()->MaxAcceleration = 1500.f; + GetCharacterMovement()->BrakingFrictionFactor = 1.f; + GetCharacterMovement()->bUseSeparateBrakingFriction = true; //Sprint ½Ã ¾Ö´Ï¸ÞÀ̼ÇÀÌ ²÷±â´Â °Å ¹æÁö GetCharacterMovement()->JumpZVelocity = 700.f; GetCharacterMovement()->AirControl = 0.35f; GetCharacterMovement()->MaxWalkSpeed = 500.f; @@ -68,6 +71,12 @@ ACombatCharacter::ACombatCharacter() StateManagerComponent->OnActionBegin.AddUObject(this, &ACombatCharacter::CharacterActionBegin); StateManagerComponent->OnActionEnd.AddUObject(this, &ACombatCharacter::CharacterActionEnd); + //Setting MovementSpeed + MovementSpeedMode = EMovementSpeedMode::Jogging; + WalkingSpeed = 200.f; + JoggingSpeed = 500.f; + SprintSpeed = 700.f; + Health = 100.f; PelvisBoneName = TEXT("pelvis"); } @@ -191,6 +200,13 @@ void ACombatCharacter::SetupPlayerInputComponent(class UInputComponent* PlayerIn //Dodge EnhancedInputComponent->BindAction(DodgeAction, ETriggerEvent::Started, this, &ACombatCharacter::Dodge); + + //ToggleWalk + EnhancedInputComponent->BindAction(ToggleWalkAction, ETriggerEvent::Started, this, &ACombatCharacter::ToggleWalk); + + //Sprint + EnhancedInputComponent->BindAction(SprintAction, ETriggerEvent::Started, this, &ACombatCharacter::StartSprint); + EnhancedInputComponent->BindAction(SprintAction, ETriggerEvent::Completed, this, &ACombatCharacter::StopSprint); } } @@ -280,6 +296,26 @@ void ACombatCharacter::Dodge(const FInputActionValue& Value) PerformDodge(); } +void ACombatCharacter::ToggleWalk(const FInputActionValue& Value) +{ + if (GetMovementSpeedMode() != EMovementSpeedMode::Walking) + SetMovementSpeedMode(EMovementSpeedMode::Walking); + else + SetMovementSpeedMode(EMovementSpeedMode::Jogging); + +} + +void ACombatCharacter::StartSprint(const FInputActionValue& Value) +{ + SetMovementSpeedMode(EMovementSpeedMode::Sprinting); +} + +void ACombatCharacter::StopSprint(const FInputActionValue& Value) +{ + if (GetMovementSpeedMode() == EMovementSpeedMode::Sprinting) + SetMovementSpeedMode(EMovementSpeedMode::Jogging); +} + void ACombatCharacter::CharacterStateBegin(ECharacterState CharState) { switch (CharState) @@ -437,6 +473,28 @@ void ACombatCharacter::EnableRagdoll() GetMesh()->SetAllBodiesBelowPhysicsBlendWeight(PelvisBoneName, 1.f); } +void ACombatCharacter::SetMovementSpeedMode(EMovementSpeedMode NewSpeedMode) +{ + if (NewSpeedMode == MovementSpeedMode) + return; + + MovementSpeedMode = NewSpeedMode; + switch (MovementSpeedMode) + { + case EMovementSpeedMode::Walking: + GetCharacterMovement()->MaxWalkSpeed = WalkingSpeed; + break; + case EMovementSpeedMode::Jogging: + GetCharacterMovement()->MaxWalkSpeed = JoggingSpeed; + break; + case EMovementSpeedMode::Sprinting: + GetCharacterMovement()->MaxWalkSpeed = SprintSpeed; + break; + default: + break; + } +} + void ACombatCharacter::PerformAttack(ECharacterAction attackType, int32 attackIndex) { ABaseWeapon* CurrentWeapon = CombatComponent->GetMainWeapon(); @@ -620,7 +678,8 @@ ECharacterAction ACombatCharacter::GetDesiredAttackType() if (GetCharacterMovement()->IsFalling()) return ECharacterAction::FallingAttack; - //TODO : Movement Speed Mode Ãß°¡ + if (GetMovementSpeedMode() == EMovementSpeedMode::Sprinting) + return ECharacterAction::SprintAttack; //TODO : Heavy Attack Ãß°¡ diff --git a/Source/D1/CombatCharacter.h b/Source/D1/CombatCharacter.h index 1c952a22..48f4aeff 100644 --- a/Source/D1/CombatCharacter.h +++ b/Source/D1/CombatCharacter.h @@ -7,6 +7,7 @@ #include "InputActionValue.h" #include "Interface/CombatInterface.h" #include "Components/StateManagerComponent.h" +#include "Definitions/GameEnums.h" #include "CombatCharacter.generated.h" @@ -52,6 +53,12 @@ class ACombatCharacter : public ACharacter, public ICombatInterface UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true")) class UInputAction* DodgeAction; + + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true")) + class UInputAction* ToggleWalkAction; + + UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true")) + class UInputAction* SprintAction; public: ACombatCharacter(); @@ -94,6 +101,9 @@ protected: void ToggleCombat(const FInputActionValue& Value); void LightAttack(const FInputActionValue& Value); void Dodge(const FInputActionValue& Value); + void ToggleWalk(const FInputActionValue& Value); + void StartSprint(const FInputActionValue& Value); + void StopSprint(const FInputActionValue& Value); private://Delegate void CharacterStateBegin(ECharacterState CharState); @@ -107,6 +117,8 @@ private: void CharacterTakeDamage(float InDamage); void ApplyHitReactionPhysicsVelocity(float InitialSpeed); void EnableRagdoll(); + void SetMovementSpeedMode(EMovementSpeedMode NewSpeedMode); + FORCEINLINE EMovementSpeedMode GetMovementSpeedMode() const { return MovementSpeedMode; } private: void PerformAttack(ECharacterAction attackType, int32 attackIndex); @@ -143,6 +155,18 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Hit", meta = (AllowPrivateAccess = "true")) TObjectPtr HitEmitter; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MovementSpeed", meta = (AllowPrivateAccess = "true")) + EMovementSpeedMode MovementSpeedMode; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MovementSpeed", meta = (AllowPrivateAccess = "true")) + float WalkingSpeed; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MovementSpeed", meta = (AllowPrivateAccess = "true")) + float JoggingSpeed; + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "MovementSpeed", meta = (AllowPrivateAccess = "true")) + float SprintSpeed; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Stats", meta = (AllowPrivateAccess = "true")) float Health; }; diff --git a/Source/D1/Components/CombatComponent.cpp b/Source/D1/Components/CombatComponent.cpp index ba62566a..b75e91df 100644 --- a/Source/D1/Components/CombatComponent.cpp +++ b/Source/D1/Components/CombatComponent.cpp @@ -3,7 +3,7 @@ #include "Components/CombatComponent.h" #include "Actor/BaseWeapon.h" -#include "Enums/CombatType.h" +#include "Definitions/GameEnums.h" #include "GameFramework/Character.h" #include "Interface/IAnimInstance.h" diff --git a/Source/D1/Enums/CombatType.cpp b/Source/D1/Definitions/GameEnums.cpp similarity index 69% rename from Source/D1/Enums/CombatType.cpp rename to Source/D1/Definitions/GameEnums.cpp index 18c8d950..887dcdb5 100644 --- a/Source/D1/Enums/CombatType.cpp +++ b/Source/D1/Definitions/GameEnums.cpp @@ -1,2 +1,2 @@ // Fill out your copyright notice in the Description page of Project Settings. -#include "Enums/CombatType.h" +#include "Definitions/GameEnums.h" diff --git a/Source/D1/Enums/CombatType.h b/Source/D1/Definitions/GameEnums.h similarity index 61% rename from Source/D1/Enums/CombatType.h rename to Source/D1/Definitions/GameEnums.h index 6b1a452f..cd171eb4 100644 --- a/Source/D1/Enums/CombatType.h +++ b/Source/D1/Definitions/GameEnums.h @@ -13,3 +13,11 @@ enum class ECombatType : uint8 GREATSWORD UMETA(DisplayName = "GREATSWORD") }; +UENUM(BlueprintType) +enum class EMovementSpeedMode : uint8 +{ + Walking UMETA(DisplayName = "Walking"), + Jogging UMETA(DisplayName = "Jogging"), + Sprinting UMETA(DisplayName = "Sprinting"), +}; + diff --git a/Source/D1/Interface/IAnimInstance.h b/Source/D1/Interface/IAnimInstance.h index e2334c87..95859ed5 100644 --- a/Source/D1/Interface/IAnimInstance.h +++ b/Source/D1/Interface/IAnimInstance.h @@ -4,7 +4,7 @@ #include "CoreMinimal.h" #include "UObject/Interface.h" -#include "Enums/CombatType.h" +#include "Definitions/GameEnums.h" #include "IAnimInstance.generated.h" // This class does not need to be modified.