TIL 25.02.18 - RayCastHit2D

강진규·2025년 2월 18일

Today I Learned

목록 보기
15/34
post-thumbnail

강의에서 3번째 게임을 만들었는데 거기서 RayCastHit2D 사용했다.
처음이기도 하고 뭔가 개인 과제에서 쓸 것 같아서 정리를 해봤다.


[ RayCastHit2D ]

  • 객체와 Ray의 충돌에 대한 결과 정보를 저장하는 구조체
  • 레이캐스팅 히트가 발생한 위치, Ray가 충돌한 물체, Ray의 원점에서
    얼마나 떨어져있는지 등의 정보를 저장하여 돌려줌
  • 조건을 붙여줘야하는데 보통 레이어로 관리

RayCastHit2D 이름 = Physics2D.Raycast(현재위치, 벡터값, 크기);

쉽게 이해하면 작은 광선(?)같은 걸 쏴서 조건에 맞는 충돌한 것에 대한 정보를 저장해준다.

ㅋㅋ 대충 이런 느낌인 것 같다.

아무튼 다시 만든 게임의 코드를 보면

int layermaskTarget = weaponHandler.target;

         RaycastHit2D hit = Physics2D.Raycast(
         transform.position, 
         direction, 
         weaponHandler.AttackRange * 1.5f, 
         (1 << LayerMask.NameToLayer("Level")) | layermaskTarget);

         if(hit.collider != null && 
         layermaskTarget == 
         (layermaskTarget | (1 << hit.collider.gameObject.layer)))
         {
             isAttack = true;
         }

현재위치 : transform.position
벡터 값 : direction
크기 : weaponHandler.AttackRange * 1.5f
조건 : 1 << LayerMask.NameToLayer("Level")) | layermaskTarget

hit에 조건에 맞는 충돌한 것에 대한 정보가 저장되어지고
조건문을 통해 충돌된 정보를 비교하여 맞으면 isAttack을 true로 해준다.


만약 레이어를 지정해주었고 이것을 사용해서 그 정보를 사용한다면,
조건문을 통해 내가 원하는 동작을 시켜줄 수 있을 것 같다.

개인과제의 내용 중에 특정 위치나 오브젝트를 통해 미니게임을 실행시켜야되는데
이걸 사용하면 될 것 같다.

0개의 댓글