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 |