From a70eb420a0f1c70db2b0f553d4e30c5857a805e3 Mon Sep 17 00:00:00 2001 From: Fiore Date: Wed, 30 Apr 2025 18:48:21 +0900 Subject: [PATCH] =?UTF-8?q?[fix]=20=ED=85=94=EB=A0=88=ED=8F=AC=ED=8A=B8=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 텔레포트 로직 수정 - 텔레포트 시 장판남기는 기능 추가 Work in JIRA ISSUE DEG-100 --- Assets/JYY/Scenes/MonsterTest.unity | 4 +- .../Character/Enemy/CasterDemonController.cs | 52 ++++++++++++++----- 2 files changed, 41 insertions(+), 15 deletions(-) diff --git a/Assets/JYY/Scenes/MonsterTest.unity b/Assets/JYY/Scenes/MonsterTest.unity index d1f98761..9a7de250 100644 --- a/Assets/JYY/Scenes/MonsterTest.unity +++ b/Assets/JYY/Scenes/MonsterTest.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:61f12068b6226afe0cda1ce4bcf16e88be342a6debc72f54e1ea5e28b943a4b0 -size 21372 +oid sha256:05683ebb5585e94d09ec90f206a227847ad9169d3c63121101e2fd7a64abf797 +size 22155 diff --git a/Assets/Scripts/Character/Enemy/CasterDemonController.cs b/Assets/Scripts/Character/Enemy/CasterDemonController.cs index 36aa772d..a8f5c6a2 100644 --- a/Assets/Scripts/Character/Enemy/CasterDemonController.cs +++ b/Assets/Scripts/Character/Enemy/CasterDemonController.cs @@ -17,6 +17,10 @@ public class CasterDemonController : EnemyController [SerializeField] private GameObject magicMissilePrefab; [SerializeField] private GameObject teleportEffectPrefab; + [Header("각종 데미지 이펙트 세트")] + [SerializeField] private GameObject chariotWarning; + [SerializeField] private GameObject chariotEffect; + private float _teleportDistance = 4f; // 플레이어 뒤로 떨어질 거리 // 텔레포트 쿨타임 @@ -49,7 +53,7 @@ public class CasterDemonController : EnemyController _doneBattleSequence = false; // TODO : 배틀 중일 때 루프 - Debug.Log("## 몬스터의 교전 행동 루프"); + // Debug.Log("## 몬스터의 교전 행동 루프"); Thinking(); } } @@ -147,23 +151,45 @@ public class CasterDemonController : EnemyController if (teleportEffectPrefab != null) Instantiate(teleportEffectPrefab, startPos, Quaternion.identity); - // 플레이어 뒤쪽 위치 계산 - Vector3 playerPos = TraceTargetTransform.position; - Vector3 behindDir = -TraceTargetTransform.forward; - Vector3 targetPos = playerPos + behindDir.normalized * _teleportDistance; + // 텔레포트와 함께 시전하는 범위 공격 + var aoe = Instantiate(chariotWarning, startPos, Quaternion.identity).GetComponent(); - // NavMesh 유효 위치 확인 - Vector3 finalPos = targetPos; - if (NavMesh.SamplePosition(targetPos, out NavMeshHit hit, 1f, NavMesh.AllAreas)) + var effectData = new DamageEffectData { - finalPos = hit.position; - } + damage = (int)attackPower, + radius = 10, + delay = 1.5f, + targetLayer = TargetLayerMask, + explosionEffectPrefab = chariotEffect + }; - // 텔레포트 실행 - Agent.Warp(finalPos); + aoe.SetEffect(effectData, null, null); + + // // 플레이어 뒤쪽 위치 계산 + // Vector3 playerPos = TraceTargetTransform.position; + // Vector3 behindDir = -TraceTargetTransform.forward; + // Vector3 targetPos = playerPos + behindDir.normalized * _teleportDistance; + // + // // NavMesh 유효 위치 확인 + // Vector3 finalPos = targetPos; + // if (NavMesh.SamplePosition(targetPos, out NavMeshHit hit, 1f, NavMesh.AllAreas)) + // { + // finalPos = hit.position; + // } + // + // // 텔레포트 실행 + // Agent.Warp(finalPos); + // + // if (teleportEffectPrefab != null) + // Instantiate(teleportEffectPrefab, finalPos, Quaternion.identity); + + + // 중앙으로 이동 + Agent.Warp(Vector3.zero); if (teleportEffectPrefab != null) - Instantiate(teleportEffectPrefab, finalPos, Quaternion.identity); + Instantiate(teleportEffectPrefab, Vector3.zero, Quaternion.identity); + } private void SetSequence(IEnumerator newSequence)