inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

레트로의 유니티 C# 게임 프로그래밍 에센스

충돌 처리

유니티에서 물체와의 충돌은 누가 감지하고 브로드캐스팅은 누가하는건가요?

459

appdong

작성한 질문수 4

1

소코반제작챕터에서 충돌처리강의를 듣다가 궁금증이 생겨 질문드립니다.

일단 제가 강의에서 이해한것은 아래와 같습니다.

오브젝트는 자신이 충돌한 사실을 모르고 일단 오브젝트끼리 충돌을 하면 유니티가 충돌했다는 메시지를 브로드캐스팅하고 메시지에 해당되는 컴포넌트가 OnTriggerEnter함수를 실행시킨다. 그리고 이때 패러미터는 유니티가 알아서 충돌한 상대방을 넣어준다.

근데 여기서 이해 안되는 것이 2가지 있습니다.

 

 

먼저 이벤트(ex: 오브젝트끼리의 충돌)를 감지하는 것이 누구인지에 대한 것입니다.

일단 오브젝트끼리 충돌해도 오브젝트는 자신이 충돌한 사실을 모른다고 하셨는데 그럼 충돌한 사실은 누가 감지하는건가요? 일단 충돌했다는 메시지를 브로드캐스팅을 하려면 충돌했다는 것을 감지할 어떤 주체가 있어야 하는데 그게 무엇인지 잘 모르겠습니다.

 

그리고 두번째로 이해안되는 것은 브로드캐스팅을 하는 것이 누구인지에 대한 것입니다.

브로드캐스팅은 어떤 이벤트를 감지한 무언가(여기선 그 무언가를 a라고 하겠습니다. 그 무언가가 정확이 무엇인지 묻는 것이 첫번째 질문입니다.)가 직접하는 건가요? 아니면 브로드캐스팅만을 전문적으로 하는 어떤 B가 있어서 이벤트를 감지한 a가 브로드캐스팅을 하는 그 B에 그 이벤트가 일어났다는 메시지를 전달하고 메시지를 받은 B가 브로드캐스팅을 하는건가요? 제가 지금까지 강의를 들으면서 이해한 바에 따르면 그 B를 유니티자체라고 생각하고 있습니다.

unity C#

답변 1

2

이제민

해당 비디오는 이전에 만들진데다, 설명을 쉽게 하기 위해 생략한 부분이 있습니다. (해당 비디오는 업데이트 예정입니다)

사실 충돌을 감지하고 메시지를 전파하는 것은 Rigidbody 컴포넌트입니다. 따라서 충돌하는 두 게임 오브젝트 중 하나라도 Rigidbody 컴포넌트가 있어야 충돌 감지가 됩니다.

Rigidbody 컴포넌트는 자신의 게임 오브젝트가 물리 엔진의 제어를 받게 하고, 유니티에서 동작중인 물리 엔진과 통신하기 때문에, 물리 처리를 감지하고 어떤 물리 사건에 맞춰 특정 처리를 실행할 수 있기 때문입니다.

그리고 MonoBehaviour를 가진 컴포넌트는 유니티의 메시지를 감지할 수 있습니다.

즉 A와 B가 충돌한 경우,  예를 들어 A가 Rigidbody 컴포넌트를 가지고 있다면 A의 Rigidbody 컴포넌트가 충돌을 감지하고, A게임 오브젝트와 B 게임 오브젝트에게 각각 충돌 메시지를 전파합니다.

따라서 A의 Rigidbody 컴포넌트는 물리 충돌을 감지했지만, A 게임 오브젝트의 Rigidobdy 컴포넌트가 메시지를 전파하기 전까지는, A 게임 오브젝트와 A 게임 오브젝트의 Rigidbody를 제외한 다른 컴포넌트들, B 게임 오브젝트와 B 게임 오브젝트의 컴포넌트들은 충돌 사실을 모르지만, '어쨌든' 메시지를 받기 때문에 메시지를 통해 충돌 사실을 알게 되는 것입니다.

코루틴 관련 질문 있습니다.

0

64

1

강의 업데이트 질문

0

88

1

궁금한 부분이 있어서 질문 남깁니다.

0

161

1

FreeLook 카메라 Zone 설정관련

0

114

1

와..정말 감탄이 나오네요..

0

144

1

추상 클래스에 대해 이해가 잘 안되었는데

0

117

1

IsTargetOnSight가 자꾸 false로 나와요.

0

103

2

레이캐스트 에셋 임포트하는방법을 모르겠어요.

0

85

1

레이케스트 에셋을 다운받았는데 임포트 방법을 모르겠습니다.

1

139

2

혹시 어드레서블 강좌 추가계획이 있으실까요?

0

125

1

시네머신 FreeLook 관련

0

221

1

텍스트 드래그 앤 드롭

0

376

2

안녕하세요 랜덤오브젝트 생성기에서 질문있습니다.

0

243

1

유니티 에디터 버전

0

373

1

text가 아닌 TextMeshPro를 사용해도 괜찮나요?

0

1728

2

상속 관련 질문입니다.

0

350

1

TPS 캐릭터 문제점 있습니다.

0

437

1

총을 쏴서 적을 맞췄을 때 저를 추적하는 코드는 어디 나와있나요??

0

276

0

github

0

305

0

wave 를 0으로 초기화해주는 부분이없는데 왜 0부터 시작하나요?

0

314

0

TPS게임 제작 Aim애니메이션 관련 질문 드립니다.

1

366

1

점프관련해서 UI버튼클릭을 통한 전달값에 대한 질문입니다.

0

303

1

인터페이스

1

235

0

혹시 본 강의에서 Dictionary 나온 파트가 있을까요?

0

265

0