충돌처리에 대한 이해도를 테스트를 하는 퀴즈가 나왔다.
Ball이 A블록에 닿으면 튀어오르고, B블록에 닿으면 물리적인 상호작용 없이 통과되지만 두 오브젝트가 닿은 것은 알 수 있다. 이때, Ball과 각 블록에는 어떤 컴포넌트들이 부착되어야 하는지 필요한 컴포넌트의 필드는 어떻게 되어 있어야 하는지, 또 각 컴포넌트가 왜 필요한지에 대한 이유를 함께 설명.
이 문제를 보는 순간 익숙한 문장이 보였다.
물리적인 상호작용 없이 통과되지만 두 오브젝트가 닿은 것은 알 수 있다.
강의에서 지나가듯 한 줄 나왔던 걸 이해해 보고자 혼자 고민해보고 그 생각을 얼마전에 공부하며 정리를 해두었던 덕분일까?
https://velog.io/@woohoosoo/UnityTIL17
그 외계어로 작성된 문제 속에서 유일하게 한가지는 확실히 알 수 있었다. 다른 것은 몰라도 여기엔 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보다는 커야할까?