728x90

2025/06/09 2

Unity 트러블슈팅 – TakeDamage가 호출되지 않음

문제 상황PlayerAttackState에서 TakeDamage()가 호출되지 않음"공격받는중" 로그가 뜨지 않음 오류 발생 원인 추론OverlapSphere 감지 자체가 안 됐을 수 있음Layer 설정이 안 돼있을 수 있음Collider를 못 찾았거나, GetComponent()가 null일 수 있음Cooldown 로직 문제로 아예 공격을 안 하고 있을 수 있음 디버깅 확인때리는중 → 플레이어 AttackState로 진입했다.적 감지 개수: 1 → OverlapSphere로 적 1개 감지했다.Enemy 컴포넌트를 못 찾음 → GetComponent()가 null이다 원인Enemy 오브젝트에 Collider 없음OverlapSphere는 Collider 기준으로 감지Collider가 없으면 감지만 되고..

[Unity] OverlapSphereNonAlloc 등 을 이용한 OverlapSphere 최적화

기본 개념Collider[] hits = Physics.OverlapSphere(position, radius, LayerMask.GetMask("Enemy")); 지정한 구체 범위 안의 Collider들을 감지배열로 리턴 → 범위 안 적이 몇 명인지 알 수 있음하지만 매 프레임 돌리면 성능 문제 발생 문제점Collider 오브젝트가 많아질수록 느려짐GC Alloc 발생 (배열 새로 생성 → 메모리 낭비 → 렉 유발)모바일/저사양 환경에서는 프레임 드랍 위험 최적화 방법1. LayerMask 필터링감지할 레이어만 지정해서 불필요한 체크 줄이기LayerMask enemyMask = LayerMask.GetMask("Enemy");Collider[] hits = Physics.OverlapSphere(po..

728x90