From 70c2edfd01de1a7b9c63b0a513a7fafc99e66db6 Mon Sep 17 00:00:00 2001 From: NTG Date: Mon, 19 Feb 2024 09:06:16 +0900 Subject: [PATCH] =?UTF-8?q?#165=20=EC=A0=84=ED=88=AC=20=ED=94=8C=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=96=B4=20=ED=98=84=EC=9E=AC=EC=B2=B4=EB=A0=A5?= =?UTF-8?q?=EC=9D=B4=20=EB=82=AE=EC=9D=84=20=EB=95=8C=20Vignette=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit + FieldBoss HpSlider 오류 수정 --- .../CombatPostProcessingVolume.asset | 124 +----------------- BlueWater/Assets/02.Scripts/BossController.cs | 2 + .../CombatPlayer/CombatPlayerController.cs | 14 +- .../Enemy/Type/FieldBoss/FieldBoss.cs | 15 ++- BlueWater/Assets/02.Scripts/CombatCamera.cs | 76 +++++++++++ 5 files changed, 97 insertions(+), 134 deletions(-) diff --git a/BlueWater/Assets/01.Scenes/02.Combat/CombatPostProcessingVolume.asset b/BlueWater/Assets/01.Scenes/02.Combat/CombatPostProcessingVolume.asset index 1b0f7bb72..210e94bf8 100644 --- a/BlueWater/Assets/01.Scenes/02.Combat/CombatPostProcessingVolume.asset +++ b/BlueWater/Assets/01.Scenes/02.Combat/CombatPostProcessingVolume.asset @@ -1,24 +1,5 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!114 &-1126567206187632849 -MonoBehaviour: - m_ObjectHideFlags: 3 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 221518ef91623a7438a71fef23660601, type: 3} - m_Name: WhiteBalance - m_EditorClassIdentifier: - active: 0 - temperature: - m_OverrideState: 1 - m_Value: -3.8 - tint: - m_OverrideState: 1 - m_Value: 0 --- !u!114 &11400000 MonoBehaviour: m_ObjectHideFlags: 0 @@ -32,61 +13,7 @@ MonoBehaviour: m_Name: CombatPostProcessingVolume m_EditorClassIdentifier: components: - - {fileID: 8895738348956266320} - - {fileID: 6190156615780581590} - {fileID: 8563356217564074714} - - {fileID: 3032653963992883521} - - {fileID: -1126567206187632849} ---- !u!114 &3032653963992883521 -MonoBehaviour: - m_ObjectHideFlags: 3 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 558a8e2b6826cf840aae193990ba9f2e, type: 3} - m_Name: ShadowsMidtonesHighlights - m_EditorClassIdentifier: - active: 0 - shadows: - m_OverrideState: 1 - m_Value: {x: 0.99049765, y: 0.8950539, z: 1, w: 0} - midtones: - m_OverrideState: 1 - m_Value: {x: 0.84888226, y: 0.5722743, z: 1, w: 0} - highlights: - m_OverrideState: 1 - m_Value: {x: 0.48475826, y: 1, z: 0.92944735, w: 0} - shadowsStart: - m_OverrideState: 1 - m_Value: 0 - shadowsEnd: - m_OverrideState: 1 - m_Value: 0.3 - highlightsStart: - m_OverrideState: 1 - m_Value: 0.55 - highlightsEnd: - m_OverrideState: 1 - m_Value: 1 ---- !u!114 &6190156615780581590 -MonoBehaviour: - m_ObjectHideFlags: 3 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 81180773991d8724ab7f2d216912b564, type: 3} - m_Name: ChromaticAberration - m_EditorClassIdentifier: - active: 0 - intensity: - m_OverrideState: 1 - m_Value: 1 --- !u!114 &8563356217564074714 MonoBehaviour: m_ObjectHideFlags: 3 @@ -102,63 +29,16 @@ MonoBehaviour: active: 0 color: m_OverrideState: 1 - m_Value: {r: 0, g: 1, b: 1, a: 1} + m_Value: {r: 1, g: 0, b: 0, a: 1} center: m_OverrideState: 1 m_Value: {x: 0.5, y: 0.5} intensity: m_OverrideState: 1 - m_Value: 0.294 + m_Value: 0.2 smoothness: m_OverrideState: 1 m_Value: 1 rounded: m_OverrideState: 1 m_Value: 0 ---- !u!114 &8895738348956266320 -MonoBehaviour: - m_ObjectHideFlags: 3 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3} - m_Name: Bloom - m_EditorClassIdentifier: - active: 0 - skipIterations: - m_OverrideState: 0 - m_Value: 1 - threshold: - m_OverrideState: 0 - m_Value: 0.9 - intensity: - m_OverrideState: 0 - m_Value: 0 - scatter: - m_OverrideState: 0 - m_Value: 0.627 - clamp: - m_OverrideState: 0 - m_Value: 65472 - tint: - m_OverrideState: 0 - m_Value: {r: 1, g: 1, b: 1, a: 1} - highQualityFiltering: - m_OverrideState: 0 - m_Value: 0 - downscale: - m_OverrideState: 0 - m_Value: 0 - maxIterations: - m_OverrideState: 0 - m_Value: 6 - dirtTexture: - m_OverrideState: 0 - m_Value: {fileID: 0} - dimension: 1 - dirtIntensity: - m_OverrideState: 0 - m_Value: 0 diff --git a/BlueWater/Assets/02.Scripts/BossController.cs b/BlueWater/Assets/02.Scripts/BossController.cs index 041e47693..a9c45fb87 100644 --- a/BlueWater/Assets/02.Scripts/BossController.cs +++ b/BlueWater/Assets/02.Scripts/BossController.cs @@ -53,12 +53,14 @@ namespace BlueWaterProject instantiatedBoss.transform.position = BossSpawnTransform.position; instantiatedBoss.gameObject.SetActive(true); UiManager.Inst.CombatUi.FieldBossHpSlider.SetHpSlider(instantiatedBoss.MaxHp, instantiatedBoss.Name); + instantiatedBoss.FieldBossHpSlider = UiManager.Inst.CombatUi.FieldBossHpSlider; return; } } instantiatedBoss = Instantiate(FieldBossPrefab, BossSpawnTransform.position, Quaternion.identity, bossInstantiateLocation); UiManager.Inst.CombatUi.FieldBossHpSlider.SetHpSlider(instantiatedBoss.MaxHp, instantiatedBoss.Name); + instantiatedBoss.FieldBossHpSlider = UiManager.Inst.CombatUi.FieldBossHpSlider; } } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Character/CombatPlayer/CombatPlayerController.cs b/BlueWater/Assets/02.Scripts/Character/CombatPlayer/CombatPlayerController.cs index 931cb60f2..2b24899ab 100644 --- a/BlueWater/Assets/02.Scripts/Character/CombatPlayer/CombatPlayerController.cs +++ b/BlueWater/Assets/02.Scripts/Character/CombatPlayer/CombatPlayerController.cs @@ -3,6 +3,7 @@ using System.Collections; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.InputSystem; +using UnityEngine.Rendering.Universal; // ReSharper disable once CheckNamespace namespace BlueWaterProject @@ -240,11 +241,6 @@ namespace BlueWaterProject var changeHp = Mathf.Max(MyCurrentValue.currentHp - attackerPower, 0); SetCurrentHp(changeHp); - - // if (InIslandCamera.Inst.InIslandCam) - // { - // VisualFeedbackManager.Inst.CameraShake(InIslandCamera.Inst.InIslandCam); - // } // 죽었는지 체크 if (changeHp == 0f) @@ -252,6 +248,14 @@ namespace BlueWaterProject Die(); return; } + else if (changeHp <= 30f) + { + CameraManager.Inst.CombatCamera.LowHpVignette(); + } + else + { + CameraManager.Inst.CombatCamera.StopLowHpVignette(); + } StartCoroutine(nameof(FlashWhiteCoroutine)); } diff --git a/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/FieldBoss.cs b/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/FieldBoss.cs index 375be9eca..91cb7c2e9 100644 --- a/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/FieldBoss.cs +++ b/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/FieldBoss.cs @@ -57,7 +57,8 @@ namespace BlueWaterProject [field: SerializeField] public float CurrentHp { get; private set; } [field: SerializeField] public Collider Target { get; set; } [field: SerializeField] public bool IsUsingSkill { get; protected set; } - + + public FieldBossHpSlider FieldBossHpSlider { get; set; } protected Vector3 PreviousDirection { get; set; } = Vector3.right; private Coroutine flashWhiteCoroutine; @@ -83,17 +84,17 @@ namespace BlueWaterProject private void OnDestroy() { + if (FieldBossHpSlider != null) + { + FieldBossHpSlider.SetActiveHpSlider(false); + } + foreach (var element in instanceSkillList) { if (element != null) { Destroy(element); } - - if (UiManager.Inst.CombatUi.FieldBossHpSlider.gameObject.activeSelf) - { - UiManager.Inst.CombatUi.FieldBossHpSlider.SetActiveHpSlider(false); - } } } @@ -150,7 +151,7 @@ namespace BlueWaterProject var changeHp = Mathf.Max(CurrentHp - attackerPower, 0); SetCurrentHp(changeHp); - UiManager.Inst.CombatUi.FieldBossHpSlider.UpdateHpSlider(changeHp); + FieldBossHpSlider.UpdateHpSlider(changeHp); // 죽었는지 체크 if (changeHp == 0f) diff --git a/BlueWater/Assets/02.Scripts/CombatCamera.cs b/BlueWater/Assets/02.Scripts/CombatCamera.cs index 2a2d239e4..89c139eb0 100644 --- a/BlueWater/Assets/02.Scripts/CombatCamera.cs +++ b/BlueWater/Assets/02.Scripts/CombatCamera.cs @@ -1,7 +1,10 @@ +using System.Collections; using System.Collections.Generic; using Cinemachine; using Sirenix.OdinInspector; using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; // ReSharper disable once CheckNamespace namespace BlueWaterProject @@ -16,6 +19,8 @@ namespace BlueWaterProject private GameObject cinemachineCameras; private List cineCamList; + private Vignette vignette; + private Coroutine lowHpVignetteCoroutine; private float originalRotation; @@ -30,6 +35,9 @@ namespace BlueWaterProject CameraManager.Inst.CombatCamera = this; CameraManager.Inst.MainCam = Camera.main; + + vignette = GetEffect(); + vignette.active = false; } [Button("셋팅 초기화")] @@ -69,5 +77,73 @@ namespace BlueWaterProject BaseCombatCamera.Follow = target; //BaseCombatCamera.LookAt = target; } + + #region PostProcessing + + public void ToggleEffect(bool value) where T : VolumeComponent + { + var effect = GetEffect(); + if (effect == null) + { + print(typeof(T) + "효과가 없습니다."); + return; + } + effect.active = value; + } + + private T GetEffect() where T : VolumeComponent + { + var postProcessVolume = FindAnyObjectByType(); + if (postProcessVolume == null) + { + print("Volume 컴포넌트를 가진 오브젝트가 없습니다."); + return null; + } + postProcessVolume.profile.TryGet(out T effect); + return effect; + } + + public void LowHpVignette() + { + if (lowHpVignetteCoroutine == null) + { + lowHpVignetteCoroutine = StartCoroutine(LowHpVignetteCoroutine()); + } + } + + public void StopLowHpVignette() + { + if (lowHpVignetteCoroutine != null) + { + StopCoroutine(lowHpVignetteCoroutine); + lowHpVignetteCoroutine = null; + + vignette.active = false; + } + } + + private IEnumerator LowHpVignetteCoroutine() + { + var startValue = 0.2f; + var endValue = 0.3f; + var time = 0f; + + vignette.intensity.value = startValue; + vignette.active = true; + + while (true) + { + time += Time.deltaTime * 2f; + vignette.intensity.value = Mathf.Lerp(startValue, endValue, time); + if (time >= 1f) + { + (startValue, endValue) = (endValue, startValue); + time = 0f; + } + yield return null; + } + } + + #endregion } } \ No newline at end of file