UI 작업하다 Ray가 안 맞아서 삽질 좀 해서 적어 놓음.

()열고 매개변수 보거나 레퍼런스 보면 되긴 하는데 그냥 적음.


2D Raycast

1
2
3
4
5
6
7
8
Vector2 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Ray2D ray = new Ray2D(pos, Vector2.zero);
RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction);
 
if (hit.collider == null)
{
    return;
}
cs

UI 작업 도중 사용함.


보통 쓸때

1
2
3
4
5
6
7
8
9
10
11
12
13
int mask = 1 << LayerMask.NameToLayer("Ground");
// mask = ~mask;
 
if (Input.GetMouseButtonDown(0))
{
    RaycastHit hit;
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
 
    if (Physics.Raycast(ray, out hit, Mathf.Infinity, mask))
    {
        Debug.Log(hit.collider.gameObject.name);
    }
}
cs

마스크는 레이를 선택한 레이어만 맞추던가 반대로 사용 가능.

mask에 ~연산자를 사용해 반전시켜 Ground빼고 선택 가능.

반응형