인자값이 타입이 다름

Unity로 작업을 할때 충돌처리를 하기 위해서 많이 쓰던 메서드이다.

 

하지만, 수업을 듣는 도중 Unity 패키지의 자동완성으로 나오는 충돌처리 메서드의 인자값의 타입이 다르다는 말을 듣고나서 찾아보니 진짜 달랐다.

그 둘의 차이점을 알고싶어 따로 알아보았다.

 

<OnCollison~(Collison )>

using UnityEngine;

    private void OnCollisionEnter(Collision collision)
    {
        
    }

OnCollison~()메서드는 두개의 물체가 충돌 할때 충돌 지점,충돌한 물체,물리적 힘 등의 정보를 처리해야된다.

Collsion 객체는 충돌관 관련된 위의 정보를 담고 있기에 해당 타입을 사용하는 것이다.

 

Collision Class 내부 모습 , Impulse,Velocity 등등 물리와 관련된 변수가 보인다.

<OnTrigger~(Collider )>

using UnityEngine;

 	private void OnTriggerEnter(Collider other)
 	{
     
 	}

OnTrigger()는 객체들이 충돌 했을때 물리적 충돌은 발생하지 않고 , Collider로 들어온 객체의 Data를 인자값으로 들고온다. 즉 쉽게 말하기 위해 충돌이라고 하는거지 해당 트리거 영역에 객체가 들어왔을때 동작하는 메서드인것이다. 

하지만 물리동작을 하지 않는다고 Rigidbody를 빼놓으면 안된다.

(움직이는 쪽이 물리 시뮬레이션을 하면서 충돌체크를 하기 때문)

 

Collider Class의 내부 모습, 물리 충돌 변수가 존재하지 않는다 그 대신에 isTrigger 변수가 눈에 보인다.

 

결론 : OnCollison() 메서드와 OnTrigger()메서드의 자동완성 인자값이 다르기에 실제로 사용할때 주의하여 사용하자

+ Recent posts