240313-TIL

2024. 3. 13. 21:19내일배움캠프

3월 13일

 

오늘은 프로젝트 진행중에 더 괜찮은 방법으로 만들 수 없을까? 고민하고

 

또 고민을 해결하기 까지의 과정을 좀 정리해보도록 하겠다.

 

최종 프로젝트

더보기

최종 프로젝트를 진행중에 있다. 맵을 만들고 맵 에는 플레이어와 상호작용을 하여

 

상점을 보여준다던지

 

창고를 보여준다던지

 

문으로가면? Scene이 넘어간다던지 하는 상호작용을 하게 만들어야 했다.

 

음 내가 생각한대로라면 플레이어가 이동을 한다 창고 주변에 가면 상호작용을 할 수 있고

 

그 상태에서 E키를 누르게 된다면? 창고 UI가 똿 하고 열리는 그림을 상상하면서 코드를 작성했다.

 

물론 상점 그리고 다른 씬으로 이동하는 문에대한 내용까지 다 이렇게 처리를 하고 싶었다.

 

플레이어는 아직 작업이 덜 끝나서 임시로 테스트 플레이어를 급하게 만들어서

 

요렇게 해당 코드를 작성해서 붙여넣었다 물론 내 생각대로 작동은 하기야 했다만.....

 

문제는 충돌한 물체를 string으로 검색한다는 점이었다.

 

최적화에 대한 학습을 하고 나니깐 뭐랄까 Tag를 검색하거나 이름을 비교하거나 하는게 굉장히 떨떠름 했다.

 

더 좋은 방법이 없을까? 생각하다가

 

내가 부딪힌 물체가 뭔지 판단하기보단 오히려 부딪힌 물체가 나한테 나 누구니깐 이거 해줘~

 

라고 알려주는 방법도 있다고 조언을 듣고 코드를 뜯어 고쳐보았다

 

 

 

이렇게 Lobby에서 이루어질 상호작용 물체에 달아줄 스크립트를 하나 만들어 주었다

 

enum으로 내가 무슨 타입의 상호작용을 할지 알 수 있게 만들어 주었고

 

이렇게 타입에 따라 상호작용을 하게끔 switch문으로 만들어 뒀다.

 

다시 Test 스크립트로 돌아가자

 

 

Trigger충돌한 물체 collision에서 TryGetComponet로 아까 만들어둔 LobbyInteract 컴포넌트를 가져온다.

 

지금 보니까 오타가 났넹... 충돌했을때 해당 물체에서 컴포넌트를 가져올 수 있다면 isinteract를 true로

 

해당 물체에서 떨어져있다면? false로 바꿔준다.

 

 

isInteract가 true라면? 가져온 interact의 Interaction을 실행시켜주자

 

메서드 명도 바꿔두는게 좋겠다 남들이 볼땐 어디 Interaction()인지 모를태니깐...

 

테스트 용으로 급하게 만들어서 하나도 고려하지 못했다...

 

 창고에 가서 e를 누르면 제대로 작동하는 모습을 볼 수 있다.

 

상점에 가서 눌러도 제대로 작동하는 모습이고

 

 

문에가서 상호작용하면 LoadingUI도 잘 보이고 씬도 잘 넘어가는 모습이다.

 

끝!

오늘은 작업하면서 고민했던 문제와 고민을 해결하는 과정을 담아보았다.

 

물론 테스트코드이기도 하고 팀원이 작업한 플레이어가 넘어오고

 

좀더 다양한 상호작용이 추가되면 그에 따라 관련 코드도 수정해야겠지만

 

이렇게도 코드를 작성할 수 있구나 라는걸 배운 시간이었다.

 

3월 13일 TIL은 여기서 마치도록 하겠다.

'내일배움캠프' 카테고리의 다른 글

240315-TIL  (0) 2024.03.15
240314-TIL  (0) 2024.03.14
240312-TIL  (0) 2024.03.12
240311-TIL  (0) 2024.03.11
240308-TIL  (0) 2024.03.08