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");
}
}
}