OverlapSphere (3D)
- 3D 공간에서 구 형태의 영역 안의 모든 콜라이더를 검출
- Layer 설정으로 원하는 Layer만 검출 가능 (설정하지 않으면 모든 콜라이더 검출)
- 중심 위치와 반지름으로 구 생성
- Collider 배열을 초기화 하지 않고도 사용가능 하지만 초기화하지 않으면 오류가 발생할 수도 있으므로 초기화 후, 사용
- 2D에서는 Physics2D.OverlapCircleAll를 사용
private LayerMask _layerMask;
[SerializeField] private Collider[] _targets;
[field : SerializeField] public float OverlapSphereRange { get; private set; }
private void Start()
{
_targets = new Collider[20];
_layerMask = LayerMask.NameToLayer("Unit");
StartCoroutine(COTargetting());
}
IEnumerator COTargetting()
{
while(true)
{
Targetting();
yield return new WaitForSeconds(1f);
}
}
private void Targetting()
{
int layerMask = (1 << _layerMask); // Layer 설정
_targets = Physics.OverlapSphere(transform.position, OverlapSphereRange, layerMask);
}
// 오브젝트를 클릭하면, 에디터에서 구 확인
void OnDrawGizmosSelected()
{
Gizmos.color = Color.green;
Gizmos.DrawSphere(this.transform.position, OverlapSphereRange);
}
// 에디터에서 항상 구 확인
void OnDrawGizmos()
{
Gizmos.color = Color.green;
Gizmos.DrawWireSphere(this.transform.position, OverlapSphereRange);
}
코루틴으로 1초마다 구를 생성해서 콜라이더를 확인하는 코드 예시
'유니티' 카테고리의 다른 글
DataManager (0) | 2024.01.30 |
---|---|
AddForce (0) | 2024.01.26 |
콤보 공격 구현 (0) | 2024.01.11 |
InputActionPhase (0) | 2024.01.11 |
3D 애니메이션 만들기 (믹사모) (0) | 2024.01.09 |