inflearn logo
강의

Course

Instructor

[Unity 6] Learning by Doing: Dr. Go's 2D Platformer Game Development

02-01 Moving Platform (Platform_00_Moving)

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

Resolved

66

wmda58

2 asked

0

안녕하세요

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

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

 

C# unity

Answer 3

0

wmda58

네 감사합니다~

 

0

unitynote

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

communityai8509

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

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

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

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

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

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

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

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

OAuth방식 강의 문의

0

7

0

Rigidbody2D의 linearVelocity 제어

0

176

3

강의 01-02에서 프리팹 렌더링 오류

0

139

2

02-05 레벨시작(마지막 강의)에서 SelectLevelController오브젝트의 SelectLevelController 컴포넌트조작

0

115

1

간혹 벽의 콜라이더를 뚫고 빠지는 경우

0

167

1

02-07 별아이템을 bool[] 로 한 이유가 궁금해요.

0

167

1

02-05 플레이어 원거리공격. 혹시 저처럼 공이 빨리 사라지는 경우

0

82

1

02-02 플레이어 체력에서 if(current >1)을 if(current > 0) 로...

0

100

1

03-01 Hidden Tilmap에서

0

110

2

02-04 점프발판 Animation 뷰에서 이미지 나오게 하는 방법이 궁금해요.

0

133

1

02-03 추락하는 발판에서 isKinematic = true;로 하면, 중력영향 안받으니

0

184

2

02-03 추락하는 발판의 Mathf.PingPong 메소드 설명문 수정해야 겠어요.

0

187

2

02-02 플레이어와 발판: PlatformBase 상속클래스 어태치문제

0

158

2

01-04. 부서지는 타일에서 첫번째타일

0

164

3

01-03 부서지지 않고 튀는 타일 충돌처리 부분 코드 바뀌어야 될 것 같습니다.

0

147

2

03-04 배경화면 스크롤에서 MainCamera의 depth를 수정해야 되지 않나요?

0

94

2

jumpBuffer에서 if(IsGrounded) 설정이 있어야 될 것 같아서 질문드립니다.

0

179

3

플렛포머 게임 3 - 1 강의 질문

0

189

1

Platformer Game 강의 관련 질문

0

254

2

플레이어 캐릭터에 Renderer를 추가하는 이유가 있을까요?

0

271

1

선생님 이 강의를 토대로 개발하고 있는데

0

211

1

통과하는 발판(OneWay)을 움직이는 발판을 적용할 방법은 없나요

0

276

2

적에게 닿은상태로 있을때

0

234

1

강의자료 다운로드가 딱 53~54MB 정도에서 멈춥니다.

0

324

2