티스토리 뷰

클라이언트 공부/유니티

RayCasting

지현씨 2022. 9. 17. 16:12

Rookiss님의 유니티 엔진 강의를 보고 정리한 내용입니다.

 

한 지점에서 특정 방향으로 레이저를 발사하여, 맞은 물체를 파악하는 방식입니다. 원래는 컴퓨터 그래픽스의 기술이기도 합니다.

 

기본적인 사용 방법은 Physics.Raycast(~~~~);입니다만 안에 들어가는 방식은 매우 다양합니다.

if (Physics.Raycast(transform.position, Vector3.forward, out hit, 10))
{
    Debug.Log($"RayCast!{hit.collider.gameObject.name}");
}

 

이번 방식은 레이저에 닿는 모든 물체를 감지하는 방식입니다.

RaycastHit[] hits;
hits = Physics.RaycastAll(transform.position + Vector3.up, Vector3.forward, 10);

 foreach(RaycastHit hit in hits)
{
    Debug.Log($"RayCast!{hit.collider.gameObject.name}");
}

 

Debug.Log로 선을 직접적으로 보는 방법

Vector3 look = transform.TransformDirection(Vector3.forward);
Debug.DrawRay(transform.position + Vector3.up, look * 10, Color.red);

 

Layout 이용해서 RayCast 사용

// Local <-> World <-> Viewport <-> Screen

//Debug.Log(Input.mousePosition);
//Debug.Log(Camera.main.ScreenToViewportPoint(Input.mousePosition));

if (Input.GetMouseButton(0))
{
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

    Debug.DrawRay(Camera.main.transform.position, ray.direction * 100.0f, Color.red, 1.0f);
    LayerMask msk = LayerMask.GetMask("Monster");
    //int mask = (1 << 8) | (1 << 9);
    RaycastHit hit;
    if (Physics.Raycast(ray, out hit, 100.0f, msk))
    {
        Debug.Log($"RayCast Camera @ {hit.collider.gameObject.name}");
    }

    //Vector3 mousePos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Camera.main.nearClipPlane));
    //Vector3 dir = mousePos - Camera.main.transform.position;
    //dir = dir.normalized;

    //Debug.DrawRay(Camera.main.transform.position, dir * 100.0f, Color.red, 1.0f);


    //RaycastHit hit;
    //if (Physics.Raycast(Camera.main.transform.position, dir, out hit, 100.0f))
    //{
    //    Debug.Log($"RayCast Camera @ {hit.collider.gameObject.name}");
    //}
}

'클라이언트 공부 > 유니티' 카테고리의 다른 글

Collision, Trigger  (0) 2022.09.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함