강의

멘토링

로드맵

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

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

작성한 질문수

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

02-01 이동 발판 (Platform_00_Moving)

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

해결된 질문

작성

·

6

0

안녕하세요

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

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

 

답변 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가 있는 오브젝트에 부착된 스크립트에서 작동할 것으로 기대되기 때문에, 두 컴포넌트가 같은 오브젝트에 존재하는지 확인해보세요.

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

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

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

작성한 질문수

질문하기