강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

김용준님의 프로필 이미지
김용준

작성한 질문수

[유니티6] 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작

02-01 이동 발판 (Platform_00_Moving)

02-01 이동 발판 (Platform_00_Moving) 질문

해결된 질문

작성

·

63

0

안녕하세요

컴포넌트 관리를 위해서 오브젝트에 자식 오브젝트를 두어 여러 컴포넌트를 나눠서 배치할 때 어떤 기준으로 나뉘는건가요?

Platform_00_Moving에 있던 Rigidbody2D를 Platform에 배치해보니까 OnCollisionEnter2D의 코드가 작동하지 않더라구요

 

퀴즈

41%나 틀려요. 한번 도전해보세요!

플레이어가 타일의 머리 충돌 영역에 부딪혔을 때, 플레이어의 Y축 속도를 0으로 만드는 주된 이유는 무엇일까요?

플레이어를 위로 튕겨나가게 하려고

타일과 플레이어 간의 충돌 처리를 가능하게 하려고

플레이어의 이동 속도를 늦추려고

플레이어의 점프력을 증가시키려고

답변 3

0

김용준님의 프로필 이미지
김용준
질문자

네 감사합니다~

 

0

고박사님의 프로필 이미지
고박사
지식공유자

OnTrigger, OnCollision 메소드는 Rigidbody2D를 가지고 있는 게임오브젝트에서 작동합니다.

 

즉, Platform_00_Moving 오브젝트에 Rigidbody2D가 있을 때는 Platform_00_Moving 오브젝트에 있는 다른 컴포넌트에서 private void OnCollisionEnter2D() { .. } 가 호출되고, Platform 오브젝트에 Rigidbody2D가 있을 때는 Platform 오브젝트에 있는 컴포넌트에서 OnCollisionEnter2D()가 호출됩니다.

 

지금처럼 자식오브젝트들이 Rigidbody2D를 가지고 있지 않고, Collider2D만 가지고 있으면 자식들이 가지고 있는 Collider2D에 충돌이 발생하면 부모(Platform_00_Moving)에 있는 Rigidbody2D가 작동합니다. 단, 위에 작성한 것과 같이 Rigidbody2D가 작동할 때 OnTrigger, OnCollision 메소드를 호출하려면 Rigidbody2D와 동일한 오브젝트에 스크립트를 컴포넌트로 넣어줘야합니다.

 

오브젝트를 나눠서 관리하는 기준은 렌더링, 충돌 등과 같이 사용되는 곳에 따라 기준을 정해서 나눕니다.

그 기준이 정해져있진 않고, 회사, 프로젝트에 따라 다르게 설정될 수 있습니다.

0

안녕하세요, 인프런 AI 인턴입니다. 김용준님께서 오브젝트와 자식 오브젝트 간의 컴포넌트 관리 기준에 대해 질문 주셨네요.

유니티에서 오브젝트의 구조를 설정할 때 컴포넌트를 어떻게 나눌지 결정하는 것은 주로 다음과 같은 기준에 의해 이루어집니다:

  1. 기능 분리: 서로 다른 기능을 수행하는 컴포넌트들을 분리하여 코드의 모듈성을 높입니다. 예를 들어, 물리 계산에 필요한 Rigidbody2DCollider2D, UI에 관련된 컴포넌트 등을 각각의 오브젝트나 자식 오브젝트에 배치할 수 있습니다.

  2. 재사용성: 특정 컴포넌트를 여러 오브젝트에서 반복적으로 사용할 때, 해당 컴포넌트를 별도의 오브젝트로 만들어 자식-부모 관계를 통해 재사용 가능합니다.

  3. 논리적 구조: 게임 오브젝트의 논리적 구성이 이해하기 쉽도록 설계합니다. 예를 들어, 하나의 오브젝트가 여러 가지 복합적인 역할을 할 경우, 각 역할을 자식 오브젝트로 분리할 수 있습니다.

김용준님께서 언급하신 Rigidbody2DOnCollisionEnter2D의 작동 문제는 Rigidbody2D가 배치된 오브젝트와 스크립트가 붙어 있는 오브젝트가 다를 때, 이벤트가 예상대로 작동하지 않을 수 있습니다. 충돌 이벤트인 OnCollisionEnter2D는 보통 Rigidbody2D가 있는 오브젝트에 부착된 스크립트에서 작동할 것으로 기대되기 때문에, 두 컴포넌트가 같은 오브젝트에 존재하는지 확인해보세요.

이와 유사한 예시로 유니티에서 클래스와 컴포넌트 배치 방법에 대한 질문을 참고하면 도움이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김용준님의 프로필 이미지
김용준

작성한 질문수

질문하기