개발 TIL

5/23 부트캠프 개발 TIL (Raycast)

HJTL 2024. 5. 23. 21:37

오늘 공부한 것

 

Raycast

Raycast는 목적 지점까지의 거리를 말하는데 오브젝트를 목표로 하면 출발 오브젝트와 목표 오브젝트사이의 거리를 레이저로 나타낸다.

        //현재 위치에서 앞방향으로 Raycast 드로우 (foward는 z축 방향으로 앞으로)
        // DrawRay(현재 지점, 목표지점 (lineSize배만큼), 색)
        Debug.DrawRay(transform.position, transform.forward * lineSize, Color.blue);

 

Raycast는 빠르거나 천천히 나가는 것이 아닌 한 프레임에서 나가는 방향이고 선 뿐만 아니라 사각형, 마름모 등의 Raycast를 그릴 수 있다.

 

RaycastHit

RaycastHit는 콜라이더 오브젝트가 있는 위치의 방향으로 돌려 충돌을 감지한다.

무슨 말이냐면 현재 위치에서 목적 위치까지의 Raycast사이에 오브젝트가 있는지 검사하는 것이다.

 

        Debug.DrawRay(transform.position, targetObject.position, Color.blue);

        //지나간 Raycast사이의 오브젝트들을 출력하고 싶으면
        RaycastHit[] hits;
        //RaycastAll(현재위치, 목표위치, 사이즈)
        hits = Physics.RaycastAll(transform.position, targetObject.position, lineSize);

        for (int i = 0; i<hits.Length; i++)
        {
        	//hits사이즈까지 hit에 저장해 이름을 출력
            RaycastHit hit = hits[i];
            Debug.Log(hit.collider.gameObject.name);
        }

 

이미지를 보면 왼쪽부터 구 1 2 3 인데

두 정육면체 사이의 Raycast안에 구 1하고 3이 닿아서 콘솔창에 오브젝트 이름이 출력되었다.