Compare commits

...

4 Commits

Author SHA1 Message Date
f2a1834589 Merge pull request '[fix] 팔라딘 몬스터 수직 베기 범위 오류 수정' (!41) from DEG-150-보스몹-공격범위-버그 into main
Reviewed-on: #41
Reviewed-by: Sehyeon <sehyeon1837@gmail.com>
Reviewed-by: jay <ayjindev@gmail.com>
2025-05-13 01:57:15 +00:00
2e1f3ccf7e [fix] 몬스터 씬 포인터 업데이트
- 실제 변경 사항은 없으나 파일 포인터 갱신됨

DEG-150
2025-05-13 10:56:05 +09:00
fc2f18d9cb [fix] 마법사 몬스터 매직 미사일이 너무 높아 플레이어를 감지하지 못하는 이슈
- 매직미사일 발사 높이 조정
- 매직미사일 플레이어 감지 물리 연산으로 변경

JIRA ISSUE DEG-150
2025-05-13 10:50:47 +09:00
6938b246dc [fix] 팔라딘 몬스터 수직 베기 범위 오류 수정
- 보여지는 공격 전조보다 실제 범위가 2배 큰 문제 수정
2025-05-13 09:57:49 +09:00
6 changed files with 33 additions and 22 deletions

BIN
Assets/JYY/Prefabs/Alien Big Blink.prefab (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

BIN
Assets/JYY/Scenes/MonsterTest.unity (Stored with Git LFS)

Binary file not shown.

View File

@ -28,7 +28,7 @@ public class VerticalAoeController : AoeControllerBase
protected override void HitCheck()
{
// 박스 판정 (사각형 직선)
Vector3 halfExtents = new Vector3(_data.radius, 1f, _data.radius * 2f);
Vector3 halfExtents = new Vector3(_data.radius, 1f, _data.radius * 2f) * 0.5f;
Collider[] hits = Physics.OverlapBox(transform.position, halfExtents, transform.rotation, _data.targetLayer);
foreach (var hit in hits)
@ -47,7 +47,7 @@ public class VerticalAoeController : AoeControllerBase
private void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.color = Color.yellow;
Vector3 center = transform.position;
Vector3 size = new Vector3(_data.radius, 1f, _data.radius * 2f);
Gizmos.matrix = Matrix4x4.TRS(center, transform.rotation, Vector3.one);

View File

@ -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<CharacterBase>();
if (character != null)
PlayerController playerController = hit.transform.GetComponent<PlayerController>();
Debug.Log(hit.transform.name);
if (playerController != null)
{
character.TakeDamage(_damage);
DestroyBullet();
playerController.TakeDamage(_damage);
}
DestroyBullet();
}
protected virtual void DestroyBullet()

View File

@ -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");