Contents
접기
728x90
문제 상황
- PlayerAttackState에서 TakeDamage()가 호출되지 않음
- "공격받는중" 로그가 뜨지 않음
오류 발생 원인 추론
- OverlapSphere 감지 자체가 안 됐을 수 있음
- Layer 설정이 안 돼있을 수 있음
- Collider를 못 찾았거나, GetComponent<Enemy>()가 null일 수 있음
- Cooldown 로직 문제로 아예 공격을 안 하고 있을 수 있음
디버깅 확인
- 때리는중 → 플레이어 AttackState로 진입했다.
- 적 감지 개수: 1 → OverlapSphere로 적 1개 감지했다.
- Enemy 컴포넌트를 못 찾음 → GetComponent<Enemy>()가 null이다
원인
- Enemy 오브젝트에 Collider 없음
- OverlapSphere는 Collider 기준으로 감지
- Collider가 없으면 감지만 되고 Enemy 스크립트를 못 찾음
- Enemy 스크립트 위치 문제
- Collider가 자식 오브젝트에 있고, Enemy 스크립트는 부모에만 있음
- GetComponent<Enemy>()로는 null 반환
해결 방법
1. Enemy에 Collider 추가
- Capsule Collider 붙이고 크기 조정
- Layer는 반드시 Enemy로 설정
2. 부모/자식 구조 대응
Enemy enemy = hit.GetComponent<Enemy>();
if (enemy == null) enemy = hit.GetComponentInParent<Enemy>();
→ 부모까지 탐색해서 Enemy 스크립트 가져오기
728x90
'GameDevelop > Unity기초쌓기' 카테고리의 다른 글
Unity 보상형 광고(AdMob) – 광고 시청 후 앱 종료/버튼 안 눌림 오류 해결 방법 (0) | 2025.09.18 |
---|---|
트러블슈팅-빌드시 안드로이드 유니티앱 바로꺼짐 (0) | 2025.09.17 |
[Unity] OverlapSphereNonAlloc 등 을 이용한 OverlapSphere 최적화 (0) | 2025.06.09 |
[Unity] SerializeField + 프로퍼티 패턴 (0) | 2025.06.08 |
Unity FSM 구조 – 방치형 RPG에 맞게 단순화 (0) | 2025.06.08 |