본문 바로가기

Unity/Unity2D

Unity2D_Week1 : Raycast

레이캐스트는 오브젝트와 다른 오브젝트가 충돌했을 때 처리할 수 있는 유용한 기술이다.

 

①.  직선형 Raycast

public class Raycast : MonoBehaviour
{
    public Transform raycastPivot;
    public LayerMask groundMask;
    public float castDistance;
    
    void Update()
    {
        RayCast();
    }
    
    private void RayCast()
    {
        // RaycastHit2D : 발사한 광선이 충돌한 오브젝트의 정보가 담긴다.
        RaycastHit2D raycast =
        Physics2D.Raycast(raycastPivot.position, Vector2.down, castDistance, groundMask);
        
        if(raycast != null)
        {
            // 레이캐스트가 null이 아니다 : 광선과 충돌한 물체가 존재한다.
            // 충돌 처리
        }
    }
}

※ Physics2D.Raycast(기준점, 방향, 길이, 레이어마스크)

 

※ 레이캐스트가 어떻게 그려지고 있는지 확인할 수 있는 스크립트 명령어

    private void OnDrawGizmos()
    {
        Gizmos.color = Color.magenta;
        Gizmos.DrawRay(raycastPivot.position, Vector2.down * castDistance);
    }

 

 

 ②.  원형 Raycast

public class Raycast : MonoBehaviour
{
    public Transform raycastPivot;
    public LayerMask groundMask;
    public float castRadius;
    
    void Update()
    {
        RayCast();
    }
    
    private void RayCast()
    {
        // RaycastHit2D : 발사한 광선이 충돌한 오브젝트의 정보가 담긴다.
        Collider2D raycast =
        Physics2D.OverlapCircle(raycastPivot.position, castRadius, groundMask);
        
        if(raycast != null)
        {
            // 레이캐스트가 null이 아니다 : 광선과 충돌한 물체가 존재한다.
            // 충돌 처리
        }
    }
}

Physics2D.OverlapCircle(기준점, 반지름 길이, 레이어마스크)

Collider2D를 변수형으로 받는다.

 

    private void OnDrawGizmos()
    {
        Gizmos.color = Color.magenta;
        Gizmos.DrawRay(raycastPivot.position, castRadius);
    }

'Unity > Unity2D' 카테고리의 다른 글

Unity2D_Week2 : Property  (0) 2021.12.09
Unity2D_Week1 : Coroutine  (0) 2021.12.06
Unity2D_Week1 : ChargeJump  (0) 2021.12.06
Unity2D_Week1 : Jump  (0) 2021.12.06
Unity2D_Week1 : Move  (0) 2021.12.06