From fc2f18d9cb5b7a12ed1dd83bce5a66d01a5ca82a Mon Sep 17 00:00:00 2001 From: fiore Date: Tue, 13 May 2025 10:50:47 +0900 Subject: [PATCH] =?UTF-8?q?[fix]=20=EB=A7=88=EB=B2=95=EC=82=AC=20=EB=AA=AC?= =?UTF-8?q?=EC=8A=A4=ED=84=B0=20=EB=A7=A4=EC=A7=81=20=EB=AF=B8=EC=82=AC?= =?UTF-8?q?=EC=9D=BC=EC=9D=B4=20=EB=84=88=EB=AC=B4=20=EB=86=92=EC=95=84=20?= =?UTF-8?q?=ED=94=8C=EB=A0=88=EC=9D=B4=EC=96=B4=EB=A5=BC=20=EA=B0=90?= =?UTF-8?q?=EC=A7=80=ED=95=98=EC=A7=80=20=EB=AA=BB=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EC=9D=B4=EC=8A=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 매직미사일 발사 높이 조정 - 매직미사일 플레이어 감지 물리 연산으로 변경 JIRA ISSUE DEG-150 --- Assets/JYY/Prefabs/Alien Big Blink.prefab | 4 +- .../JYY/Prefabs/Bullets/Magic Missaile.prefab | 4 +- .../Character/Enemy/Bullet/BulletBase.cs | 37 +++++++++++++------ .../Character/Enemy/CasterDemonController.cs | 2 - 4 files changed, 29 insertions(+), 18 deletions(-) diff --git a/Assets/JYY/Prefabs/Alien Big Blink.prefab b/Assets/JYY/Prefabs/Alien Big Blink.prefab index abcf6a68..d0829083 100644 --- a/Assets/JYY/Prefabs/Alien Big Blink.prefab +++ b/Assets/JYY/Prefabs/Alien Big Blink.prefab @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a1f8d0221468c75d2d3493c9338f253cb9b753dc860d56ddee853b4450ca6461 -size 77370 +oid sha256:957feb878cd80c20a3dc70cfb66c740204db8155c97835537e39de8730221fdc +size 77283 diff --git a/Assets/JYY/Prefabs/Bullets/Magic Missaile.prefab b/Assets/JYY/Prefabs/Bullets/Magic Missaile.prefab index a70f17b0..c7bbc27d 100644 --- a/Assets/JYY/Prefabs/Bullets/Magic Missaile.prefab +++ b/Assets/JYY/Prefabs/Bullets/Magic Missaile.prefab @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3f001c75ff289549a3434a98114a11c041bcd61411bc2d892a0edd95c86652f5 -size 10837 +oid sha256:d51e7bbc994507d09d8e41c524596021b31347e399b76074317e2fa3b19fbbc2 +size 10895 diff --git a/Assets/Scripts/Character/Enemy/Bullet/BulletBase.cs b/Assets/Scripts/Character/Enemy/Bullet/BulletBase.cs index d3c1a9e9..788d8b55 100644 --- a/Assets/Scripts/Character/Enemy/Bullet/BulletBase.cs +++ b/Assets/Scripts/Character/Enemy/Bullet/BulletBase.cs @@ -26,6 +26,9 @@ public class BulletBase : MonoBehaviour // 내부용 private Vector3 _direction = Vector3.forward; private float _timer; + private Vector3 _prevPosition; + + [SerializeField] private LayerMask _targetLayer; public virtual void Initialize(BulletData bulletData) { @@ -40,31 +43,41 @@ public class BulletBase : MonoBehaviour transform.rotation = Quaternion.LookRotation(_direction); _timer = 0f; + _prevPosition = transform.position; } private void Update() { - // 1) 이동 - transform.position += _direction * (_speed * Time.deltaTime); + float moveDist = _speed * Time.deltaTime; - // 2) 수명 카운트 + // 1) Raycast 충돌 검사 + if (Physics.Raycast(_prevPosition, _direction, out RaycastHit hit, moveDist, _targetLayer)) + { + // 닿은 지점으로 이동 + transform.position = hit.point; + OnBulletHit(hit); + return; + } + + // 2) 실제 이동 + transform.position += _direction * moveDist; + _prevPosition = transform.position; + + // 3) 수명 검사 _timer += Time.deltaTime; if (_timer >= _lifeTime) - { DestroyBullet(); - } } - private void OnTriggerEnter(Collider other) + private void OnBulletHit(RaycastHit hit) { - // TODO: 주인공 캐릭터를 찾는 로직 추가 필요 - // 주인공 스크립트를 찾아 처리할 것. - var character = other.GetComponent(); - if (character != null) + PlayerController playerController = hit.transform.GetComponent(); + Debug.Log(hit.transform.name); + if (playerController != null) { - character.TakeDamage(_damage); - DestroyBullet(); + playerController.TakeDamage(_damage); } + DestroyBullet(); } protected virtual void DestroyBullet() diff --git a/Assets/Scripts/Character/Enemy/CasterDemonController.cs b/Assets/Scripts/Character/Enemy/CasterDemonController.cs index 84ce18ec..e04f27ee 100644 --- a/Assets/Scripts/Character/Enemy/CasterDemonController.cs +++ b/Assets/Scripts/Character/Enemy/CasterDemonController.cs @@ -5,8 +5,6 @@ using Random = UnityEngine.Random; public class CasterDemonController : EnemyController { - - // Animation public static readonly int Cast = Animator.StringToHash("Cast"); public static readonly int Flee = Animator.StringToHash("Flee");