[Unity]충돌처리(feat.IsTrigger)

Hoojung Ahn·2024년 5월 21일

충돌처리에 대한 이해도를 테스트를 하는 퀴즈가 나왔다.

Ball이 A블록에 닿으면 튀어오르고, B블록에 닿으면 물리적인 상호작용 없이 통과되지만 두 오브젝트가 닿은 것은 알 수 있다. 이때, Ball과 각 블록에는 어떤 컴포넌트들이 부착되어야 하는지 필요한 컴포넌트의 필드는 어떻게 되어 있어야 하는지, 또 각 컴포넌트가 왜 필요한지에 대한 이유를 함께 설명.

이 문제를 보는 순간 익숙한 문장이 보였다.

물리적인 상호작용 없이 통과되지만 두 오브젝트가 닿은 것은 알 수 있다.

= IsTrigger

강의에서 지나가듯 한 줄 나왔던 걸 이해해 보고자 혼자 고민해보고 그 생각을 얼마전에 공부하며 정리를 해두었던 덕분일까?
https://velog.io/@woohoosoo/UnityTIL17

그 외계어로 작성된 문제 속에서 유일하게 한가지는 확실히 알 수 있었다. 다른 것은 몰라도 여기엔 IsTrigger가 들어간 다는 사실.

아는 것 내에서 작성할 수 있는 답변이란

볼, A,B 블록 전부 Rigidbody2D와 Collider2D(모양에 맞게 박스와 원)이 필요하다. B 블록은 isTrigger가 필요한데 인식은 되어야 하지만 물리적인 충돌이 없어야 하기 때문이다.

였고 해설을 확인해보니 반은 맞았지만 반은 틀린 그러니까 어찌되었던 이번에도 맞춘 것 하나 없는 그런 주차가 된 것이었다.


그렇다면 내가 놓친것은 무엇일까?

답은 이렇다.

Ball과 각 블록에 Collider가 있어야 한다. 2D 오브젝트로 보이니 Ball은 CircleCollider2D, 그리고 각 블록은 BoxCollider2D. 그리고 B는 물리적인 상호작용은 없다고 했으므로 IsTrigger는 체크. 그 다음 Ball의 물리적인 작용을 위해서 Ball에는 Rigidbody2D를 추가로 붙여주어야 한다. 이 때 튀어오르게 만들기 위해 PhysicsMaterial2D를 Rigidbody2D 컴포넌트의 머터리얼 필드에 할당해주고 Bounciness는 0보다는 커야한다. 또한 Gravity Scale도 0보다 커야 아래로 떨어진다.

총 3가지를 놓쳤다.

  • PhysicsMaterial2D를 Rigidbody2D 컴포넌트의 머터리얼 필드에 할당

  • Bounciness는 0보다는 커야한다

  • Gravity Scale도 0보다 커야 아래로 떨어진다

이 중 Gravity Scale은 조금 더 고민하고 생각하면 쓸 수 있는 답이었는데 아는 것 나왔다가 덤벙댄 잘못이 큰 것 같고, 그 외 나머지 것들은 확실히 생소했다.

공부할 것이 생긴 것이다. 물론 공부할 것 밖에 없지만 그래도 아는 거 옆에 모르는 거 공부하는게 심리적인 저항감(?)이 덜 느껴지는 것도 있어서 추가로 공부할 것들로 선정 해본다.


PhysicsMaterial2D란 무엇인가?
머터리얼 필드란 무엇인가?
Bounciness는 무엇이며 왜 0보다는 커야할까?


0개의 댓글