Unity와 OpenXR 기반으로 제작된 AR/VR 전환형 퍼즐 게임입니다.
주의 사항
SSAFY 프로젝트는 보안 관계상 모든 소스코드 파일 열람이 불가능합니다.
열람이 필요하실 경우 저에게 연락한 뒤 제가 SSAFY를 통하여 소스코드 열람을 허가를 받은 뒤 공개가 가능합니다.
Inside Home – 유니티를 이용한 게임 제작
🎮 프로젝트 개요
Unity와 OpenXR 기반으로 제작된 AR/VR 전환형 퍼즐 게임입니다.
게임 초반에는 AR 환경에서 시작하여 오브젝트와 상호작용하다가, 특정 조건에서 VR 공간으로 진입하여 방마다 주어진 퍼즐을 해결하며 진행하게 됩니다.
🛠 기술 스택
- Unity 6000.0.57f1 (6.0)
- OpenXR
- Android Build 지원
- Meta All-in-one SDK (Quest3 포함)
📖 게임 초반 흐름
- AR 화면 시작
- 스피커와 집 모양의 에셋이 배치됩니다.
- 스피커를 눌러 소리를 조절하며 XR 상호작용을 경험합니다.
- 집 모양 에셋을 집어 회전해본 뒤, 내려놓거나 던지면 VR 공간으로 전환됩니다.
- VR 진입 후
- 세 개의 방(창고, 거실, 주방)에 순차적으로 입장합니다.
- 각 방 입구에는 투명벽이 있으며, 문제를 해결해야 통과할 수 있습니다.
- 문제 해결 시 배경 음악이 바뀌고, 투명벽이 해제됩니다.
- 주요 힌트는 손전등 빛으로 숨겨진 글자를 밝혀내는 방식으로 제공합니다.
🗂 프로젝트 생성 방법
- Git에서 받은 폴더 중 Assets, ProjectSettings, Packages 폴더를 임의의 이름이 붙은 빈 폴더 하위로 이동.
- Unity Hub → Projects → Add → 해당 폴더 선택.
→ Unity가 ProjectSettings와 Packages 설정을 인식하여 동일한 버전 환경으로 프로젝트가 열립니다.
💻 실행 방법
- PC 테스트
- Hierarchy에서
XR Device Simulator활성화. - 상단 Play ▶ 버튼 클릭.
- 일시정지 버튼을 끄면 실제 상호작용 테스트 가능.
- Hierarchy에서
- Meta Quest3 (VR 기기) 빌드
File → Build Profiles에서 Android 플랫폼 선택 후 Switch Platform.- Run Device에 Quest 기기가 잡히는지 확인.
- Build 또는 Build & Run 실행.
🏠 방 구성 및 퍼즐 설명
1️⃣ 창고 (첫 번째 방)
- 어두운 방 안에서 유일하게 손전등을 발견.
- 손전등을 비춰 전기 배전함을 탐색합니다.
⚡ 전기 배전함 퍼즐 흐름
- 퓨즈 삽입 단계
FuseSlotTracker2개가 모두 꽂혀야FuseGateManager가 메인 스위치 조작을 허용.
- 메인 스위치 (검정 스위치, -90° 회전)
MainSwitchSimpleDriverSmoothed로 -90° 위치일 때만MainSwitchState가 ON 처리.- 이 스위치가 활성화되면 붉은 KnifeSwitch가 동작 가능.
- 붉은 KnifeSwitch 조작
KnifeSwitchSnap을 통해 ON/OFF 제어.- ON: 램프 점등 + 투명벽 해제.
- OFF: 램프 소등 + 투명벽 다시 활성화.
- OFF 전환 시 스프링으로 자동 복귀.
🏆 결과
- 모든 단계를 성공적으로 수행하면 방에 불이 켜지고, 다음 스테이지로 갈 수 있는 투명벽이 해제됩니다.
2️⃣ 거실 (두 번째 방)
- 커다란 시계에서 시침과 분침이 사라진 상태로 째깍거림.
- 옷장을 열어도 아무것도 없으나, 연결된 방의 TV 쪽 구조를 보면 대칭 구조임을 확인.
- 차이가 나는 물체(촛대)를 찾아 가져옴.
- 다시 시계로 돌아와 손전등으로 벽/바닥에서 힌트를 발견.
그 힌트를 기반으로 시계 바늘을 맞추면 투명벽 해제.
3️⃣ 주방 (세 번째 방, 최종 공간)
- 켜진 오븐은 동작하지 않음.
- 냉장고를 조작하면 오븐 완료음과 함께 라이트가 꺼짐.
- 오븐에서 출입증을 획득.
- 냉장고 옆 태그기에 출입증을 태그하면 냉장고가 열림.
- 특정 추가 행동으로 최종 탈출문 생성.
🔦 손전등 시스템
- HandLight.prefab: XR Grab 가능 손전등 프리팹.
- FlashlightToggleByHeldHand: 잡은 손의 버튼(A/B 또는 X/Y)으로 라이트 On/Off 제어.
- SpotRevealBinder: 라이트 콘 내부에서만 특정 텍스트/오브젝트 표시(머티리얼 기반).
- FlashlightBeamTrigger + Revealable: 빔 트리거 충돌 시 글자 On/Off (콜라이더 기반).
- RevealBySpot.shader: 라이트 콘 안에서만 보이는 셰이더.
🎨 UI/UX 기능
🔊 Speaker – 배경음 조절
- SoundSetting Variant.prefab을 통해 스피커 오브젝트와 상호작용하면 게임 배경음 볼륨을 조절할 수 있습니다.
- 게임 초반 AR 공간에서 XR 상호작용 체험 요소로 배치되었습니다.
🚪 Exit Door – 게임 종료 및 탈출구
- GameExit Canvas Variant.prefab +
GameExit.cs- 초기 화면(Canvas)에서 Exit 버튼을 누르면
QuitGame()실행 → 에디터에서는 Play 모드 종료 / 빌드에서는 Application.Quit().
- 초기 화면(Canvas)에서 Exit 버튼을 누르면
- ExitDoor.png, Exitdoor2.png
- 주방 퍼즐 최종 단계에서 탈출구로 활용.
- 최종 기믹 성공 시 Exit Door가 활성화되어 엔딩 연출.
참가 팀원
- 황XX(팀장, 유니티 씬 제작)
- 이XX(유니티 기술 지원 및 씬 제작)
- 손XX(유니티 씬 제작)
- 박XX(유니티 씬 제작, 에셋 관리)
- 김XX(유니티 씬 제작, 에셋 관리)
- 정승재(UI/UX, 사운드, 컨트롤러 파트)
해당 프로젝트 기여내역
저는 해당 프로젝트에서 UI/UX, 사운드, 컨트롤러 파트를 담당하였습니다.
3D VR/AR에 출력되는 인터페이스 구성 및 컨트롤러 설정, 인벤토리 구현, 사운드 매니징 및 배경음악 작업 파트를 담당하여 구현하였습니다.