반응형
보스 몬스터가 일정 확률로 특수 스킬을 사용하면 은신을 하고서 랜덤한 위치에 등장하도록 만들기로 했다. 맵 제작을 맡으신 팀원분께서 작성하신 맵 오브젝트를 랜덤 배치하는 코드를 보고 좋은 방법을 배웠다.
맵 구역 내 랜덤 포지션 값을 받아 다른 오브젝트(맵, 장애물 등)와 겹치지 않는지 확인하고서 자리를 확정한다.
// 랜덤 위치로 이동
Vector3 randomPos = GetRandomPos();
while (Physics2D.OverlapCircle(randomPos, 0.5f, obstacleLayer) != null)
{
randomPos = GetRandomPos();
}
transform.position = randomPos;
Physics2D.OverlapCircle(pos, radius, layerMask)는 특정 위치에 충돌체가 있는지 감지하는 함수이다. 감지하면 Collision2D를, 감지하지 못하면 null을 반환한다.
OverapCircle 외에도 콜리전 종류마다 제공하고, All은 특정 위치에 있는 모든 충돌체(Collider2D)를 배열로 반환한다.
반응형
'공부 기록 > 유니티 Unity' 카테고리의 다른 글
[Unity/TIL] 3D 환경 조성하기 (스카이박스 & 낮과 밤 구현하기) (0) | 2025.03.04 |
---|---|
[Unity/TIL] delegate, Action 활용 - UI 팝업창 (0) | 2025.02.28 |
[Unity/TIL] DOTween으로 UI 애니메이션 만들기 (0) | 2025.02.25 |
[Unity/TIL] 2D TopDown Shooting 게임 제작 (2) | 2025.02.18 |
[Unity/TIL] Stack 게임 따라 만들기 (Transform, 파티클이펙트, 포스트 프로세싱, 버튼에 OnClick 함수 코드로 추가하기) (0) | 2025.02.17 |