Unity

[Unity] RayCast 특정 Layer만 충돌시키기

Guk-blog 2019. 6. 12. 17:19
728x90
반응형

RayCast를 사용하면 레이어를 지정 안했을때 가장 먼저 닿는 오브젝트를 인식함.

 

만약 원하지 않는 오브젝트를 투과해서 원하는 오브젝트에만 닿게 하고 싶다면 아래 코드를 사용

선언 : int _layerMask = 1<<LayerMask.NameToLayer("One");

사용 : Physics.Raycast(ray, out hit, 100f, _layerMask)

or Physics.Raycast (transform.position, transform.TransformDirection (Vector3.forward), hit, Mathf.Infinity, _layerMask); 

등등

 

몇 개의 레이어만 원할 때

선언 : int _layerMask =1<<(-1)-((1<<LayerMask.NameToLayer("One"))|(1<<LayerMask.NameToLayer("Two");

위에서 (-1)은 모든 레이어를 말함

즉 One과 Two를 제외한 모든 레이어에 충돌 확인을 하겠다는 것.

 

 

RayCast 함수

  1. public static bool Raycast(Ray ray, out RaycastHit hitInfo);
  2. public static bool Raycast(Ray ray, out RaycastHit hitInfo, float maxDistance);
  3. public static bool Raycast(Ray ray, out RaycastHit hitInfo, float maxDistance, int layerMask);
  4. public static bool Raycast(Ray ray, out RaycastHit hitInfo, [Internal.DefaultValue("Mathf.Infinity")] float maxDistance, [Internal.DefaultValue("DefaultRaycastLayers")] int layerMask, [Internal.DefaultValue("QueryTriggerInteraction.UseGlobal")] QueryTriggerInteraction queryTriggerInteraction);
  5. public static bool Raycast(Ray ray, float maxDistance);
  6. public static bool Raycast(Ray ray, float maxDistance, int layerMask);
  7. public static bool Raycast(Ray ray);
  8. public static bool Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance);
    public static bool Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance, int layerMask);
  9. public static bool Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance, int layerMask, QueryTriggerInteraction queryTriggerInteraction);
  10. public static bool Raycast(Vector3 origin, Vector3 direction);
  11. public static bool Raycast(Vector3 origin, Vector3 direction, float maxDistance);
  12. public static bool Raycast(Vector3 origin, Vector3 direction, float maxDistance, int layerMask);
  13. public static bool Raycast(Vector3 origin, Vector3 direction, [Internal.DefaultValue("Mathf.Infinity")] float maxDistance, [Internal.DefaultValue("DefaultRaycastLayers")] int layerMask, [Internal.DefaultValue("QueryTriggerInteraction.UseGlobal")] QueryTriggerInteraction queryTriggerInteraction);
  14. public static bool Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo);
728x90
반응형