-
내일배움캠프 36일차 TIL - 3D 게임 기초 개발 - 팀 프로젝트 3TIL/Unity 2024. 6. 5. 20:54
[한 줄 요약]
유니티 숙련 주차 팀 프로젝트를 진행하며 2층 퍼즐 기믹을 구현했고, 카메라 줌인 기능을 구현 중이다..
[학습 내용]
유니티 숙련 주차 팀 프로젝트
2층 퍼즐 기믹
스토리 클립보드
퍼즐 정답을 유추할 수 있는 스토리가 작성되어 배치되어 있다.
의자 상호작용
의자와 상호작용 할 수 있도록 구현하였다. 기본적으로 에임을 갖다 대면 프롬프트가 출력된다.
그리고 E 키를 누르면 퍼즐 관련 패널이 켜진다.
퍼즐 패널 카메라
의자 아래에 적힌 숫자를 패널에 출력하기 위해서 카메라를 추가했다. 카메라를 비췄을 때 오브젝트가 너무 어두워서 Spotlight 조명도 추가했다.
문제는 이 카메라를 패널에 출력하는 것이었다. 다행히 구글에서 자료를 찾을 수 있었다.
먼저 빈 텍스처를 하나 만들었다. 그리고 카메라의 Target Texture를 이 텍스처로 지정해줬다.
그러면 이 텍스처에 카메라가 찍고 있는 뷰가 담긴다.
다음으로 패널에 Raw Iamge를 만들고 이 텍스처를 넣어줬다.
카메라 설정에서 Culling Mask를 Interactable 레이어로 설정해줬기 때문에, 책상과 의자만 카메라에 담길 수 있었다.
퍼즐 패널 기타
그리고 이외에 패널이 켜지면 플레이어의 키 입력을 멈추고, 마우스 고정을 해제하는 등의 작업을 했다. 마우스를 자유롭게 움직일 수 있기 때문에 패널 닫기 버튼을 만들어 누를 수 있게 하였다. 패널이 닫히면 원래대로 키입력 등이 동작한다.
Json 특강 2
개인과제 피드백
단면
충돌처리는 어느 한쪽에서 됐다면 반대쪽은 안 될 가능성이 크다. 한쪽에서 레이를 쐈다면 반대쪽에서도 레이를 쏴서 더블 체크를 해야 한다.
코루틴
오브젝트가 파괴되어 코루틴이 실행되지 않는 경우가 있다. 코루틴 헬퍼 등의 다른 오브젝트를 만들어서 매개변수 등을 활용하여 그 쪽에서 코루틴을 실행시키는 방법이 있다.
이동
Rigidbody의 velocity를 직접 건드리는 방법 외에도 addForce, tranlate, movePostion 등 여러 방법이 있다. 각자의 장단점을 이해하고 사용하는 것이 중요하다.
직렬화
제네릭
여러 데이터를 직렬화할 때마다 함수를 만드는 일은 비효율적이다. 이럴 때 제네릭을 사용한다면 한결 수월해진다.
public void SaveData<T>(T data) { string saveData = JsonUtility.ToJson(data); File.WriteAllText(savePath + $"/{typeof(T).ToString()}.txt", saveData); } public T LoadData<T>() { if (!File.Exists(savePath + $"/{typeof(T).ToString()}.txt")) return JsonUtility.FromJson<T>(null); string data = File.ReadAllText(savePath + $"/{typeof(T).ToString()}.txt"); return JsonUtility.FromJson<T>(data); }
서버 통신
Json -> C#
아래 사이트에 들어가서 변환하여 사용하면 편하다.
UnityWebRequest
유니티에서 기본적으로 제공하는 웹 통신 기능이다.
Open API 활용
// 코루틴 사용 IEnumerator GetCharacterID(string nickname) { string path = url + nickname; UnityWebRequest www = UnityWebRequest.Get(path); www.SetRequestHeader("x-nxopen-api-key", apiKey); yield return www.SendWebRequest(); string result = www.downloadHandler.text; id = JsonUtility.FromJson<CharacterOCID>(result); Debug.Log(result); }
Using 메서드
using() {} 메서드를 사용하면 블록의 구문이 끝났을 때 소괄호 안의 객체들이 메모리 반환된다.
[회고]
오늘 2층 퍼즐을 어느 정도 완성했다. 현재는 카메라 줌인 기능을 구현 중이다. 아마 카메라의 FOV를 건드려주면 해결될 거 같다. 일단 키 입력부터 받아야하기 때문에 그 부분을 만들다가 끝났다.
현충일이 지나고 오는 금요일에는 줌인 기능을 빠르게 완성하고 이후 작업을 찾아봐야겠다. 특강이 많이 배정된 날이라서 시간이 많지는 않을 것 같다.
'TIL > Unity' 카테고리의 다른 글
내일배움캠프 38일차 TIL - 3D 게임 기초 개발 - 팀 프로젝트 5 (0) 2024.06.10 내일배움캠프 37일차 TIL - 3D 게임 기초 개발 - 팀 프로젝트 4 (0) 2024.06.07 내일배움캠프 35일차 TIL - 3D 게임 기초 개발 - 팀 프로젝트 2 (0) 2024.06.04 내일배움캠프 34일차 TIL - 3D 게임 기초 개발 - 팀 프로젝트 1 (1) 2024.06.03 내일배움캠프 32일차 TIL - 3D 게임 기초 개발 - 개인 과제2 (0) 2024.05.30