From 430a638a16dd81aa28cb6bbb5694ee37ae52aea2 Mon Sep 17 00:00:00 2001 From: "DESKTOP-VVOCIJO\\PC" Date: Fri, 22 May 2026 16:45:10 +0900 Subject: [PATCH] =?UTF-8?q?2026-05-22=20=EC=B9=B4=EB=A9=94=EB=9D=BC=20?= =?UTF-8?q?=EC=89=90=EC=9D=B4=ED=81=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/01_Scenes/BossScene.unity | 4 +- .../Enemy/Skills/EarthquakeSkill.cs | 38 +++++++++++++++++++ .../Animator/ColorManAnimator.controller | 29 ++++++++++++++ .../WhiteMan/Animations/GroundSlam_Cast.anim | 3 ++ .../Animations/GroundSlam_Cast.anim.meta | 8 ++++ .../EarthquakeSkill/EarthquakeSkill.prefab | 4 +- 6 files changed, 82 insertions(+), 4 deletions(-) create mode 100644 Assets/03_Character/WhiteMan/Animations/GroundSlam_Cast.anim create mode 100644 Assets/03_Character/WhiteMan/Animations/GroundSlam_Cast.anim.meta diff --git a/Assets/01_Scenes/BossScene.unity b/Assets/01_Scenes/BossScene.unity index d3d36be..2663ada 100644 --- a/Assets/01_Scenes/BossScene.unity +++ b/Assets/01_Scenes/BossScene.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:283e74c5afcf8eef64badc969dc9886c0b72efda21f60fea04931d0a29779a3c -size 188514 +oid sha256:b59243d6bdb637313b84e7bc9ec2a0995e0bc68aaadf4435d03428b13291608b +size 185790 diff --git a/Assets/02_Scripts/Enemy/Skills/EarthquakeSkill.cs b/Assets/02_Scripts/Enemy/Skills/EarthquakeSkill.cs index 580a462..c700668 100644 --- a/Assets/02_Scripts/Enemy/Skills/EarthquakeSkill.cs +++ b/Assets/02_Scripts/Enemy/Skills/EarthquakeSkill.cs @@ -8,6 +8,9 @@ public class EarthquakeSkill : BossSkill [SerializeField] private float _activeDuration = 1.5f; // 피해 판정 유지 시간 [SerializeField] private float _recovery = 0.6f; // 판정 OFF 후 후딜 [SerializeField] private int _damage = 15; + [Header("Camera Shake")] + [SerializeField] private float _cameraShakeDuration = 0.5f; + [SerializeField] private float _cameraShakeStrength = 0.5f; [SerializeField] private float _liftForce = 0.5f; // 지면 피격 시 띄우는 세기 protected override async Awaitable RunSkill(CancellationToken token) @@ -33,6 +36,8 @@ private void Earthquake() PlayerController player = GameManager.Instance.LocalPlayer; if (player == null) return; + ShakeCamera(); + // 플레이어가 지면에 닿아 있을 때만 발동. 공중이면 아무 효과 없음. if (!player.IsGrounded) return; @@ -40,4 +45,37 @@ private void Earthquake() player.Launch(new Vector2(0f, _liftForce)); player.TakeDamage(_damage); } + + private async void ShakeCamera() + { + if (_cameraShakeDuration <= 0f || _cameraShakeStrength <= 0f) return; + + Camera mainCamera = Camera.main; + if (mainCamera == null) return; + + Transform cameraTransform = mainCamera.transform; + Vector3 previousOffset = Vector3.zero; + float elapsed = 0f; + + try + { + while (elapsed < _cameraShakeDuration) + { + float fade = 1f - elapsed / _cameraShakeDuration; + Vector2 offset = Random.insideUnitCircle * (_cameraShakeStrength * fade); + Vector3 currentOffset = new Vector3(offset.x, offset.y, 0f); + cameraTransform.localPosition += currentOffset - previousOffset; + previousOffset = currentOffset; + + await Awaitable.NextFrameAsync(destroyCancellationToken); + elapsed += Time.deltaTime; + } + } + catch (System.OperationCanceledException) { } + finally + { + if (cameraTransform != null) + cameraTransform.localPosition -= previousOffset; + } + } } diff --git a/Assets/03_Character/ColorMan/Animations/Animator/ColorManAnimator.controller b/Assets/03_Character/ColorMan/Animations/Animator/ColorManAnimator.controller index e7181b1..1ee9a89 100644 --- a/Assets/03_Character/ColorMan/Animations/Animator/ColorManAnimator.controller +++ b/Assets/03_Character/ColorMan/Animations/Animator/ColorManAnimator.controller @@ -1972,6 +1972,32 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: +--- !u!1102 &2586254138909662861 +AnimatorState: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: GroundSlam2 + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: [] + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 1 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 7400000, guid: 1ceaa33c995f9ba4fa4e981a1ad755ba, type: 2} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: --- !u!1102 &2669098690014596114 AnimatorState: serializedVersion: 6 @@ -3237,6 +3263,9 @@ AnimatorStateMachine: - serializedVersion: 1 m_State: {fileID: -9013432840856765531} m_Position: {x: 2900, y: 440, z: 0} + - serializedVersion: 1 + m_State: {fileID: 2586254138909662861} + m_Position: {x: 2480, y: 360, z: 0} m_ChildStateMachines: [] m_AnyStateTransitions: [] m_EntryTransitions: [] diff --git a/Assets/03_Character/WhiteMan/Animations/GroundSlam_Cast.anim b/Assets/03_Character/WhiteMan/Animations/GroundSlam_Cast.anim new file mode 100644 index 0000000..1e0a908 --- /dev/null +++ b/Assets/03_Character/WhiteMan/Animations/GroundSlam_Cast.anim @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef397c503dc78349c44691b2e272c57c5277691228d8c7aed66b9be91260c55b +size 3025 diff --git a/Assets/03_Character/WhiteMan/Animations/GroundSlam_Cast.anim.meta b/Assets/03_Character/WhiteMan/Animations/GroundSlam_Cast.anim.meta new file mode 100644 index 0000000..26cf3e2 --- /dev/null +++ b/Assets/03_Character/WhiteMan/Animations/GroundSlam_Cast.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1ceaa33c995f9ba4fa4e981a1ad755ba +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/08_Objects/BossSkills/EarthquakeSkill/EarthquakeSkill.prefab b/Assets/08_Objects/BossSkills/EarthquakeSkill/EarthquakeSkill.prefab index ec425ea..ace67fb 100644 --- a/Assets/08_Objects/BossSkills/EarthquakeSkill/EarthquakeSkill.prefab +++ b/Assets/08_Objects/BossSkills/EarthquakeSkill/EarthquakeSkill.prefab @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:12592007b31b53ee3bc56ad37194d5f856d4267b1508361f91aa63d7660ceb13 -size 1541 +oid sha256:29338c604ef720ad60b4f3cb4b125ce19c048d134f9196fc36322d4cdc5ac29c +size 1598