- Unity Physics.Overlap2025년 03월 24일
- 우밍
- 작성자
- 2025.03.24.오후06:39
반응형Uinty에서 Overlap이란?
Physics Overlap은 Unity에서 물리 공간 안에 어떤 오브젝트가 들어와 있는지 검사할 때 사용하는 기능이에요.
쉽게 말하면, "이 구역 안에 뭐가 있지?" 를 물어보는 거예요.언제 사용할까?
Overlap 기능은 다음과 같은 상황에서 자주 사용돼요
- 공격 범위 안에 적이 있는지 확인할 때
- 아이템 습득 범위 안에 플레이어가 있는지 확인할 때
- 트리거 없이, 직접적으로 물리적 영역을 검사할 때
자주 사용하는 Overlap 메서드
메서드 설명 Physics.OverlapSphere
구 형태의 영역 안에 있는 Collider들을 검사 Physics.OverlapBox
박스 형태의 영역 안에 있는 Collider들을 검사 Physics.OverlapCapsule
캡슐 형태의 영역 검사 모두 Collider[] 배열을 반환하기 때문에, 안에 뭐가 있는지 직접 확인할 수 있어요.
예제 코드: OverlapSphere로 적 감지하기
using UnityEngine; public class EnemyDetector : MonoBehaviour { public float radius = 5f; public LayerMask enemyLayer; void Update() { Collider[] hitColliders = Physics.OverlapSphere(transform.position, radius, enemyLayer); foreach (var hitCollider in hitColliders) { Debug.Log("적 감지됨: " + hitCollider.name); } } void OnDrawGizmosSelected() { Gizmos.color = Color.red; Gizmos.DrawWireSphere(transform.position, radius); } }
Overlap 이후의 처리 방식
Overlap 함수는 단순히 지금 그 영역 안에 뭐가 있는지 알려줄 뿐이에요.
그래서 이후 처리는 직접 검사하고 필요한 작업을 수행해야 해요.예시: 범위 안에 적이 있는지 확인하고 공격하기
void DetectEnemies() { Collider[] hits = Physics.OverlapSphere(transform.position, detectRadius, enemyLayer); foreach (Collider hit in hits) { Enemy enemy = hit.GetComponent<Enemy>(); if (enemy != null && !enemy.IsDead) { enemy.TakeDamage(10); } } }
주요 처리 방식
- 컴포넌트 가져오기 : GetComponent()로 필요한 스크립트를 가져와 처리
- 조건 확인 : 예를 들어 체력이 0 이하인지, 태그나 레이어 확인 등
- 행동 호출 : 데미지 주기, 상태 변경, UI 업데이트 등
최적화 팁
Overlap은 간단하지만, 매 프레임마다 많이 사용하면 성능에 영향을 줄 수 있어요.
아래는 성능을 위한 팁이에요- LayerMask로 검사 범위 줄이기
Physics.OverlapSphere(position, radius, enemyLayer);
- 필요한 레이어만 검사해서 불필요한 연산 줄이기
- Physics.OverlapSphereNonAlloc 사용
Collider[] buffer = new Collider[10]; int count = Physics.OverlapSphereNonAlloc(position, radius, buffer, enemyLayer);
- GC(가비지 컬렉션)을 방지해서 성능 향상
- 고정된 배열을 사용하므로 할당이 일어나지 않음
- 다만 배열이 부족하면 일부 오브젝트는 감지되지 않을 수 있음
- Update에서 남발하지 않기
- 매 프레임마다 Overlap 체크하는 건 피해야 해요.
- 일정 시간 간격(Time.deltaTime 누적)이나 특정 조건 발생 시에만 호출
- 필요한 경우에만 검사
- 예 : 적이 주변에 있을 가능성이 낮을 땐 검사 생략
Trigger vs Overlap 차이점
항목 Trigger Overlap 방식 콜아이더에 자동으로 반응 특정 시점에 직접 검사 처리 OnTriggerEnter, Stay, Exit 반환된 배열을 수동 처리 성능 물리 엔진에서 관리 직접 호출하므로 컨트롤 가능 적합한 상황 상시 감지 (문 통과 등) 순간 감지 (스킬 범위, 주변 탐색 등) 반응형'게임엔진 > 유니티' 카테고리의 다른 글
1. 유니티 엔진이란? (0) 2025.03.24 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)