[Unity] Physics.Raycast 왜 쓰는 걸까?

ChangJin·2023년 12월 17일
0

Unity

목록 보기
4/17
post-thumbnail

공식 문서를 참고해보면...

https://docs.unity3d.com/ScriptReference/Physics.Raycast.html

Raycast는 Origin Point에서 한 방향으로 광선을 쏘는 것을 의미합니다.

광선과 충돌되는 Collider에 대한 거리, 위치 등의 정보를 RaycastHit으로 반환합니다. 주로 오브젝트를 검출하는데 사용합니다.

Physics.Raycast란 Origin Point에서 한 direction으로 광선을 쏘는 것입니다. Scene에서 시작점에서 방향으로 모든 충돌체에 Ray를 쏩니다. optionally LayerMask를 넣어주면 충돌을 하지 않게 만들 수 있습니다.

충돌이 되면 true를 반환하고 RaycastHit로 충돌관련 정보를 넘겨줍니다.



using UnityEngine;

// C# example.

public class ExampleClass : MonoBehaviour
{
    // See Order of Execution for Event Functions for information on FixedUpdate() and Update() related to physics queries
    void FixedUpdate()
    {
        // bit mask를 얻기 위해서 layer (8)의 인덱스를 bit shift함.
        int layerMask = 1 << 8;

        // layer 8에서만 충돌이 되도록 함.
        // 그러나 우리는 layer 8을 제외한 모든 곳에서 충돌을 감지하고자 함.
        // ~ 연산으로 bit mask를 반대로 바꿈
        layerMask = ~layerMask;

        RaycastHit hit;
        // player layer를 제외하고 어떤 오브젝트든지 광선과 부딪힘을 판단합니다.
        if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, Mathf.Infinity, layerMask))
        {
            Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * hit.distance, Color.yellow);
            Debug.Log("Did Hit");
        }
        else
        {
            Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * 1000, Color.white);
            Debug.Log("Did not Hit");
        }
    }
}
profile
게임 프로그래머

0개의 댓글

관련 채용 정보