반응형

충돌범위 안에 있는 모든 충돌체를 가져와 참조 하고 싶다, 충돌범위안 모든 콜리더가 잇는 오브젝트를 알고 싶다

 

그러면 Physics.OverlapXXX 함수들을 사용하면 되는데요 .

Overlap함수 종류로는, OverlapBox , OverlapSphere , OverlapCapsule 가 있습니다.

 

이중에서 OverlapCapsule 함수 사용법을 알아보겟습니다 .

 

OverlapCapsule 함수 정의를 찾아보면 아래 와같습니다 

 

 

 

----------------------------------------------------------------------------------------------------------------------------------

public static Collider [] OverlapCapsule ( Vector3 point0 , Vector3 point1 , float radius , int layerMask = AllLayers, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);

 

매개 변수

point0 start캡슐 의 구의 중심 .
point1 end캡슐 의 구의 중심 .
radius 캡슐의 반경입니다.
layerMask 레이어 마스크 캡슐을 전송할 때 선택적 colliders을 무시하는데 사용된다.
queryTriggerInteraction 이 쿼리가 트리거에 도달해야하는지 여부를 지정합니다.

----------------------------------------------------------------------------------------------------------------------------------

 

OverlapCapsule 함수에 들어가는 매개변수중에서 point0, point1 두 인자가 어떻게 값을 넣어야하는지 궁금햇습니다.

구글링해도 딱히 사용법도 안올라와서 제가 해봣습니다.

 

start캡슐 의 구의 중심 ? end캡슐 의 구의 중심? 무슨 말인가 했엇죠 

 

end캡슐 의 구의 중심 / start캡슐 의 구의 중심 . 아래 사진과같은 의미입니다.

 

사진에 명칭을 달리햇지만 (Pos1, Pos2)

 

결론적의미는 캡슐의 맨위쪽 위치와  맨아래쪽 위치를 말하는겁니다.

 

 

아래는 OverlapCapsule 함수 사용법 예시 입니다.

  void Update()
    {
    
    	//반경
	float radius = 5f;
        
        //캡슐의 맨아래 위치
        Vector3 pos1 = new Vector3(Tr.position.x, Tr.position.y-ConstHeight, Tr.position.z);
        //캡슐의 맨위 위치
        Vector3 pos2 = new Vector3(Tr.position.x, Tr.position.y + ConstHeight, Tr.position.z);

        Collider[] colls = Physics.OverlapCapsule(pos2, pos1, radius);

        for (int i = 0; i < colls.Length; i++)
        {

            _player = colls[i].GetComponent<Player_Script>();

            if(_player != null)
            {
               //...
            }
        }


        
    }

 

ConstHeight  변수는 임의지정한 높이 값입니다. 정해준 값에 따라 캡슐의 높이가 설정됩니다.

 

 

 

 

 

* 추가적으로 OverlapCapsuleNonAlloc 함수 사용법도 위와 동일합니다 .

OverlapCapsuleNonAlloc는 할당한 충돌체들을 반환하지않고 충돌한 갯수를 반환합니다. 그러므로 OverlapCapsule 사용할때보다 메모리 누적이 덜되기 때문에 게임부하에 덜주게 됩니다. 반대로 OverlapCapsule는 반환되는 충돌체들을이메모리할당하기 때문에 메모리 누적이 발생합니다.

 

 

 

이상  Physics.OverlapCapsule 함수 사용법 이었습니다.

반응형

+ Recent posts