레이캐스트는 오브젝트와 다른 오브젝트가 충돌했을 때 처리할 수 있는 유용한 기술이다.
①. 직선형 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 |