diff --git a/Assets/01_Scenes/GameScene.unity b/Assets/01_Scenes/GameScene.unity index 1bf2152..d272be2 100644 --- a/Assets/01_Scenes/GameScene.unity +++ b/Assets/01_Scenes/GameScene.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:03ff4c8c580ae1647bfbcc225c4ff6953addd148672db0830714158f3c0a0f33 -size 79277 +oid sha256:f6a23f5602ee4e36e8c057eb3b6b49130fc925d9cd1de3ba4de9fcb430130245 +size 79331 diff --git a/Assets/02_Scripts/Combat/WeaponData.cs b/Assets/02_Scripts/Combat/WeaponData.cs index fa8c066..a463666 100644 --- a/Assets/02_Scripts/Combat/WeaponData.cs +++ b/Assets/02_Scripts/Combat/WeaponData.cs @@ -45,6 +45,7 @@ public class WeaponData : ScriptableObject [Header("Equipped Animations")] public string IdleAnimationState; // 장착 시 idle 애니메이션 (예: "Idle_Sword") public string WalkAnimationState; // 장착 시 walk 애니메이션 (예: "Walk_Sword") + public string BackpedalAnimationState; // 장착 시 백페달 애니메이션 (Down+좌우, 비우면 PlayerController 기본값) [Header("Attack")] public ComboNode AttackRootNode; // Punch 입력 시 사용할 콤보 root (단일 노드 가능) diff --git a/Assets/02_Scripts/Player/PlayerController.cs b/Assets/02_Scripts/Player/PlayerController.cs index adf7cf5..ff39cb8 100644 --- a/Assets/02_Scripts/Player/PlayerController.cs +++ b/Assets/02_Scripts/Player/PlayerController.cs @@ -20,6 +20,8 @@ public class PlayerController : MonoBehaviour,IDamageable [Header("Movement")] [SerializeField] private float _moveSpeed = 5f; // 이동 속도 (units/sec) [SerializeField] private string _walkAnimationState = "Run"; // 걷기/달리기 애니메이션 State 이름 + [SerializeField] private float _backpedalSpeed = 3f; // 백페달(Down+좌우) 이동 속도 — 보통 _moveSpeed보다 느리게 + [SerializeField] private string _backpedalAnimationState = "BackWalk"; // 백페달 시 재생할 애니메이션 (뒤로 걷기) private float _moveInputX = 0f; // 현재 X 입력값 (-1/0/1) private float _moveInputY = 0f; // 현재 Y 입력값 (-1/0/1) — 위/아래 방향 공격 판정용 private string _activeBaseState; // 현재 재생 중인 locomotion State (중복 Play 방지용) @@ -252,7 +254,11 @@ private void FixedUpdate() // 입력 잠금이 없고, (액션 중이 아니거나 액션이 이동을 허용할 때) 좌우 입력으로 velocity 갱신. if (!IsMovementLocked() && (!IsActionActive() || _actionAllowsMovement)) - _rb.linearVelocity = new Vector2(_moveInputX * _moveSpeed, _rb.linearVelocity.y); + { + // 백페달이면 느린 속도. 액션 중에도 동일하게 적용 (이동사격 = Down 변형 + CanMoveDuringAction). + float moveSpeed = IsBackpedaling() ? _backpedalSpeed : _moveSpeed; + _rb.linearVelocity = new Vector2(_moveInputX * moveSpeed, _rb.linearVelocity.y); + } if (!IsFacingLocked() && (!IsActionActive() || _actionAllowsTurn)) UpdateFacingFromMoveInput(); @@ -306,12 +312,23 @@ private void OnMoveInput(Vector2 value) } // SpriteRenderer.flipX로 좌우 반전 (transform.localScale이 아닌 이유: 자식 콜라이더 위치가 따라 뒤집히면 곤란). + // Down(아래) 키를 누르고 있으면 페이싱을 고정 — 백페달에서 뒤로 가면서 정면을 유지하는 핵심 규칙. + // 이 함수가 페이싱 전환의 단일 통로라, 여기만 막으면 locomotion·콤보 입력 전부에 적용된다. private void UpdateFacingFromMoveInput() { + if (_moveInputY < 0f) return; + if (_moveInputX != 0f && _spriteRenderer != null) _spriteRenderer.flipX = _moveInputX < 0f; } + // Down + 좌우를 함께 누른 상태 = 백페달. + // 페이싱 고정(UpdateFacingFromMoveInput) + 느린 이동(_backpedalSpeed) + 전용 애니메이션. + private bool IsBackpedaling() + { + return _moveInputY < 0f && _moveInputX != 0f; + } + // 점프 우선순위: 지상 점프 > 공중(2단) 점프 private void OnJumpInput() { @@ -1067,6 +1084,13 @@ private string ChooseLocomotionState() string idle = equipped != null && !string.IsNullOrEmpty(equipped.IdleAnimationState) ? equipped.IdleAnimationState : _idleAnimationState; + string backpedal = equipped != null && !string.IsNullOrEmpty(equipped.BackpedalAnimationState) + ? equipped.BackpedalAnimationState + : _backpedalAnimationState; + + // 백페달(Down+좌우)이면 전용 애니메이션 — 뒤로 걷는 모션 (공격 중이 아닐 때만 표시). + if (IsBackpedaling() && !string.IsNullOrEmpty(backpedal)) + return backpedal; if (_moveInputX != 0f && !string.IsNullOrEmpty(walk)) return walk; diff --git a/Assets/03_Character/WhiteMan/Animations/GunWalkFire.anim b/Assets/03_Character/WhiteMan/Animations/GunWalkFire.anim index 77c8d60..6b5ed67 100644 --- a/Assets/03_Character/WhiteMan/Animations/GunWalkFire.anim +++ b/Assets/03_Character/WhiteMan/Animations/GunWalkFire.anim @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dce5cb0310563adb13239e0a0072a29f16a5308e6aa2a4c6ee70cd9151926a80 +oid sha256:2e76093fba5b5a4d42d261d2a1dbf79261d81f0065e925e942a731aca8b8f58d size 2984 diff --git a/Assets/05_Data/Attack/GunFire.asset b/Assets/05_Data/Attack/GunFire.asset index 2cfa635..1c8c1c0 100644 --- a/Assets/05_Data/Attack/GunFire.asset +++ b/Assets/05_Data/Attack/GunFire.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4acabf013c85f81776bbb4509457fb8d765e5b19bb11c26c687279c5c202336b -size 3221 +oid sha256:a76c138ec63a472230ddc2ac6f285b037a67ef2c248ac8904bef73c4b686a59b +size 3241 diff --git a/Assets/05_Data/Attack/GunRunFire.asset b/Assets/05_Data/Attack/GunRunFire.asset new file mode 100644 index 0000000..e60de7c --- /dev/null +++ b/Assets/05_Data/Attack/GunRunFire.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf372528a8a90b685611abe19968579ef39bfacfbd0a8873ad65d27a9bdead8f +size 3250 diff --git a/Assets/05_Data/Attack/GunRunFire.asset.meta b/Assets/05_Data/Attack/GunRunFire.asset.meta new file mode 100644 index 0000000..33989ee --- /dev/null +++ b/Assets/05_Data/Attack/GunRunFire.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7836bd26ed5ce164ea8854ffa1e452a5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/05_Data/Attack/GunWalkFire.asset b/Assets/05_Data/Attack/GunWalkFire.asset new file mode 100644 index 0000000..01868b1 --- /dev/null +++ b/Assets/05_Data/Attack/GunWalkFire.asset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5841ca76656f87ac1c364472283dd6400e60c2a3a731003ddeeaea6f1263c187 +size 3253 diff --git a/Assets/05_Data/Attack/GunWalkFire.asset.meta b/Assets/05_Data/Attack/GunWalkFire.asset.meta new file mode 100644 index 0000000..6c2152a --- /dev/null +++ b/Assets/05_Data/Attack/GunWalkFire.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f2652931608d3af46a79158b80dcfc22 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/05_Data/Combo/Combo_GunFire.asset b/Assets/05_Data/Combo/Combo_GunFire.asset index 7ddc9df..e788e4b 100644 --- a/Assets/05_Data/Combo/Combo_GunFire.asset +++ b/Assets/05_Data/Combo/Combo_GunFire.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3fdde1439d248d1b24b895290c2b9cff9b7d147416d240c7c814f5cf206e4971 -size 658 +oid sha256:8e4aae58f88cb0ea376e4b6bdd927dba643fa7ef07ecbccc9b567c8f37d3c734 +size 875 diff --git a/Assets/05_Data/Weapon/Gun.asset b/Assets/05_Data/Weapon/Gun.asset index 705225f..c40598e 100644 --- a/Assets/05_Data/Weapon/Gun.asset +++ b/Assets/05_Data/Weapon/Gun.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:be6ea4da169b20d4fc66d82a4b61b9c58893d604218d93e97ff425952a6beec7 -size 676 +oid sha256:349ec29e74ac56c4cce7e0107723161f8caf4e727503e953762b75f663c65cc1 +size 711 diff --git a/Assets/05_Data/Weapon/Sword.asset b/Assets/05_Data/Weapon/Sword.asset index 7dad299..bd364fc 100644 --- a/Assets/05_Data/Weapon/Sword.asset +++ b/Assets/05_Data/Weapon/Sword.asset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b68a7e74251d91698bfda4d0e4209781d160495d364b7f6cc1a04e2016b7f303 -size 685 +oid sha256:24173b1c5d5e79f1886220e80dec33c854ecd870236ce106573d1dc6b645404d +size 722 diff --git a/Assets/_Recovery.meta b/Assets/_Recovery.meta new file mode 100644 index 0000000..3556f61 --- /dev/null +++ b/Assets/_Recovery.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5ca885ea8137440448a536a8e408352c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/_Recovery/0.unity b/Assets/_Recovery/0.unity new file mode 100644 index 0000000..1bf2152 --- /dev/null +++ b/Assets/_Recovery/0.unity @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03ff4c8c580ae1647bfbcc225c4ff6953addd148672db0830714158f3c0a0f33 +size 79277 diff --git a/Assets/_Recovery/0.unity.meta b/Assets/_Recovery/0.unity.meta new file mode 100644 index 0000000..b20b55d --- /dev/null +++ b/Assets/_Recovery/0.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b6e71f45f6a6eb047a72d095e2960e73 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: