프로젝트 일지/Unity

[Unity/TIL] 3D 퍼즐 플랫폼 게임 - 팀 프로젝트 일지 (1)

톰마토 2025. 3. 13. 23:54
728x90

어제부터 새로운 팀 프로젝트를 시작했다. 와이어프레임을 그려보며 회의를 시작했다가, 아이디어를 뻗어나가며 계획을 완성시켰다. 와이어프레임은 포문을 열어주는 정도의 역할이고 사실상 브레인스토밍식의 회의를 한 것 같은데, 다양한 게임 경험을 공유하는 것 같아서 재미있었다.

 

이번에는 피그마가 아닌 miro를 사용해서 문서를 작성하였는데 아주 좋은 툴을 알게 된 것 같다!! miro에서 아이디어 회의, Git 규칙, 와이어프레임, 클래스 설계도 등을 모두 작성하였다. 클래스 설계는 자세히 설계하지는 않고 파일 depth를 설계한 것에 가까웠다. 초기에 필요할 스크립트와 폴더가 정리된 채로 시작하는 정도만 해도 작업이 수월하게 느껴졌다.

 

열정적인 퍼즐 아이디어 회의.

이번 팀 프로젝트에서는 퍼즐 시스템 두 가지를 담당하여 개발하고 있다. 굉.재 (굉장히 재미있다는 뜻)

때깔도 괜찮고 육성 시뮬레이션 광인의 마음을 흔드는 Office 컨셉의 에셋을 골라서 그런지 뭘 만져도 재미있게 느껴지는 상태이다...ㅋㅋㅋㅋ

 

퍼즐 한 가지는 오늘 오전까지 오브젝트간 Trigger 이벤트를 활용해서 간단하게 구현완료했다. 퍼즐을 혼자 만드는 것이 아니고 다른 팀원분과 나눠서 개발하고 있는 거라 Puzzle 부모 클래스를 만들고 공통된 기능을 interface로 넣어주는 등의 구조를 짜면서 다시 한 번 공부가 되었다.

 

오늘 오전까지 게임에 필요한 필수 기능들을 어느정도 갖추었기 때문에, 오늘 하루는 기존 퍼즐과 비슷하게 만들기보다 새로운 기믹을 사용할 수 있는 퍼즐을 만들어보는 시간으로 주어졌다. 

World Space UI

Fast Food Simulator 게임을 플레이할 때 컴퓨터를 사용하는 것이 너무 현실적인 고증으로 느껴져서 재미있었던 기억이 난다. 게다가 게임 컨셉이 산업 스파이이기 때문에, 컴퓨터를 사용하는 퍼즐을 넣고 싶었다.

Fast Food Simulator 게임에서 컴퓨터 사용 영상

 

컴퓨터 화면은 UI로 만들어 주는데, 캔버스의 Render Mode는 World Space로 해서 모니터에 딱붙여줬다. 그런데 처음에 캔버스가 엄청 큼. 캔버스 크기는 해상도로 만들고, 자체 Scale을 줄여서 사용해야 한다. 그래야 UI 크기 지정할 때 편리하다. 그렇지 않으면 UI 위치 조정할 때마다 0.00004... 이런 값을 계산해가며 넣어야 한다. 

모니터 스크린 UI

그리고 Render Mode를 WorldSpace로 할 경우 Event Camera를 지정해줘야 하는데, 각 씬에서의 Main

Camera로 설정해주고 싶었다. 그래서 코드상에서 달아줬다. 그외에는 UI 제작하는 과정은 똑같았다! (물론 Fast Food Simulator와 똑같이 하려면 컴퓨터 클릭 시 카메라를 모니터 앞으로 고정해주는 과정이 필요하겠다.)

Canvas canvas = GetComponent<Canvas>();
canvas.worldCamera = Camera.main;

 

Spring Joint 사용 

퍼즐 요소로서 컴퓨터를 켜기 위해 단순 클릭으로 눌리는 버튼이 아니라, 물리적인 힘에 의해 눌리는 버튼을 만들어 주고 싶었다. 무게에 의해서 눌리게 하는 것은 Rigidbody만 있으면 가능하다. 하지만 다시 가벼워지면 버튼이 다시 올라가고, 이런 버튼의 움직임이 자연스럽게 해주기 위해 찾아보다가 Spring Joint라는 기능이 딱 내가 원하던 기능이길래 사용해보았다. 처음에는 생각대로 안 되서 다양한 시도를 해보다가 튜터님들께 찾아가 튜터님들과 함께 여러가지 실험을 해서 결국 이해하게 되었다!

Spring Joint는 두 개의 Rigidbody를 이어주고 그 사이 스프링처럼 연결되어 있는 듯 움직이게 해주는 역할을 한다. 한 곳에 Spring Joint를 추가하고, Connected Body 프로퍼티에 다른 쪽을 연결해주면 된다. 공식문서를 보면 Connected Body를 비워두면 고정된 지점에 연결된다고 한다.!!

 

https://docs.unity3d.com/kr/530/Manual/class-SpringJoint.html

 

스프링 조인트 - Unity 매뉴얼

스프링 조인트(Spring Joint) 는 두 개의 리지드바디를 결합하지만 마치 스프링으로 연결되어 있는 듯 둘 사이의 거리가 달라지게 할 수 있습니다.

docs.unity3d.com

 

아래 사진에서 스프링 관계를 그림으로 설명해봤다. 왼쪽 버튼은 바텀에 SpringJoint를 달고 버튼 뚜껑을 연결해줬다. 오른쪽 버튼에는 SpringJoint를 뚜껑에 달고 ConnectedBody를 비워둔 것이다. 

스프링 연결된 상태

왼쪽이 실제 세계의 버튼과 동일한 구조이기 때문에 왼쪽 방식을 채택하게 될 것 같다. 이해가 안됐었는데 이해하게 됨!! 

Spring Joint 사용 예제 영상

 

 

728x90