Unity

OnCollsionEnter 함수 작동이 안될 때

hallojih 2022. 3. 5. 13:42

A 와 B가 충돌할 때

1. 둘다 Collider 있어야함

2. 둘 중하나 Rigidbody 있어야함

3. 둘 다 isTrigger 체크 해제

 

 

나의 경우 땅은 MeshCollider로 되어있다. 이것으로 인해 충돌이 안되는 이유도 있다고 한다. 이럴 경우 y좌표로 인한 문제가 발생한다고는 하나, 정확한 원인은 찾지 못했다.

 

OnCollision 함수는 양쪽 다 isTrigger가 켜져 있지 않을 때, 콜라이더까리 충돌하면 반응하는 함수이다.

OnTrigger 함수는 한 쪽 이상이 isTrigger가 켜져 있을 때 반응하고 인자는 Collider를 사용한다.

[출처]https://kupaprogramming.tistory.com/20

 

 

따라서

OnCollisionEnter함수 대신 OnTriggerEnter 함수를 대신 사용하면 된다고 하는 자료를 찾았다.

https://answers.unity.com/questions/210220/apparently-i-dont-understand-oncollisionenter.html

 

Apparently I don't understand OnCollisionEnter - Unity Answers

 

answers.unity.com

 

 

MonoBehaviour.OnTriggerEnter(Collider)

함수의 경우 Collider가 다른 트리거 이벤트에 침입했을 때 호출된다.

 

 

[출처]https://docs.unity3d.com/kr/530/ScriptReference/MonoBehaviour.OnTriggerEnter.html

 

Unity - 스크립팅 API: MonoBehaviour.OnTriggerEnter(Collider)

이 메시지는 해당 트리거 콜라이더와 트리거와 접촉한 강체(or 강체가 없다면 콜라이더)로 보내집니다. Notes: Trigger events are only sent if one of the colliders also has a rigidbody attached. Trigger events will be sent

docs.unity3d.com

 

 

 

 

OnCollision과 OnTrigger 비교

[출처] https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=lovelybarry&logNo=220844960463 

 

( Unity쨩 - 8일차 ) Trigger와 Collision의 차이 및 Trigger를 이용한 충돌 구현

먼저 Trigger와 Collision의 차이를 설명하겠다. 둘다 충돌을 감지할 수 있다. 무슨 차이가 있을까 ? 먼...

blog.naver.com

충돌처리를 할 시 Collision의 경우는 Rigidbody라는 녀석을 사용하기 때문에 도배를 할 경우 부하가 많이 걸린다.

그러니 왠만하면 Trigger로 해결을 보는 것이 더 효율적이라는 점이다.

728x90
반응형