본문 바로가기
Study/Unity

[Unity] Raycast

by chobbo 2024. 5. 24.

Ray

- 직선의 시작점과 방향

 

받아오는법

오브젝트

Ray ray = new Ray(transform.position, transform.forward);

 

카메라 중심

Ray ray = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0));

 

마우스

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

 

 

Raycast

- Ray에 맞은 물체가 무엇인지 여부를 판단 후 처리.

- Ray, RaycastHit, MaxDistance, LayerMask 등이 속함

 

RaycastHit

- Raycast에 의해 검출된 객체의 정보가 담겨있다.

- 검출되는 정보가 있다면 true, 없다면 false를 반환

- Brickbreak 게임 제작 때 아래의 예시와 같이 사용했던 경험이 있다. 

  (공의 양 옆에 1f 길이 만큼의 Ray를 쏴주고 paddleLayerMask에 속하는 레이어만 검사)

RaycastHit2D hitRight = Physics2D.Raycast(transform.position, transform.right, 1f, paddleLayerMask);
RaycastHit2D hitLeft = Physics2D.Raycast(transform.position, -transform.right, 1f, paddleLayerMask);
// Paddle 옆면과 충돌했으면
if (hitRight.collider != null || hitLeft.collider != null)
{
    // 레이캐스트가 Paddle 레이어에 충돌한 경우
    Debug.Log("옆면");
}
else
{
    // 레이캐스트가 Paddle 레이어에 충돌하지 않은 경우
    rb2d.velocity = ApplyMovement(worldPos) * speed;
    Debug.Log("윗면");
}

 

RaycastHit에 담겨있는 정보들

1. RaycastHit.point

- 레이캐스팅이 감지된 위치

 

2. RaycastHit.distance

- Ray의 원점에서 충돌 지점까지의 거리

 

3. RaycastHit.transform

- 충돌 객체의 transform에 대한 참조

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

[Unity] TMPRO 한글 Import 하는 방법  (0) 2024.05.27
[Unity] AnimationCurve  (0) 2024.05.27
[Unity] Rigidbody - ForceMode  (0) 2024.05.24
[Unity] 스카이박스  (0) 2024.05.24
[Unity] Collision 속성  (0) 2024.05.22