Unity&C#/Unity

[Unity] OvelapSphere

리네엔 2024. 10. 17. 21:43
  • 내배캠 꾸준별 실습에서 내적을 사용해서 시야각 내의 소행성을 검출해야하는 구현과제가 있었다.
  • 근데 콜라이더도 없고, 딱히 레이를 사용하는 것도 아닌 것 같았다.
  • 내적은 하겠는데 그래서 콜라이더 없이, ray없이 주변에 오브젝트를 어떻게 검출하는데?

Physics.OverlapSphere

  • 일정거리내의 콜라이더를 검출해내는 함수
  • public static Collider[] OverlapSphere(Vector3 position, float radious, int layerMask=AllLayers, QueryTriggerInteraction=QueryTriggerInteraction.UseGlobal)
  • 메모리를 할당하므로 대신 다른걸 사용하는게 좋다고 doc에 되어있다.

Physics.OverlapSphereNonAlloc

  • 일정거리내의 콜라이더를 검출하는 함수
  • collider 배열을 매개변수로 제공하면, 해당 배열에 collider를 저장해준다. 따라서 가비지를 생성하지 않는다.
  • 하지만 정해진 배열을 넘어가는 수의 콜라이더는 검출하지 못한다는 문제를 갖고있다
  • public static int OverlapSphereNonAlloc(Vector3 position, float radious, collider[] result, int layerMask=AllLayers,QuerryTriggerInteraction interaction = QueryTriggerInteraction,UseGlobal)