본문 바로가기

포트폴리오/졸업작품

[MetaEdu] 유니티 전광판처럼 표현하기! (초간단) 서론 MetaEdu 프로젝트는 G-Learning(게임 러닝)을 베이스로 하기에 대표적인 교육 예능이자 게임인 골든벨을 벤치마킹하여 구현하기로 하였다. 우선, 문제가 나오는 스크린(Canvas)에 전광판처럼 효과를 주고자 하여 전광판의 글씨가 어떻게 표현되는 건지 조사해보았다. 전광판은 다양한 형태로 표현되지만, 대부분의 전광판들은 네모 혹은 원 모양의 수많은 LED 전구가 나열되서 나온다는 것을 알게되었다. 본론 따라서 문제가 나올 Canvas 위에 Shader Graph를 사용하여 수 많은 원형 구멍을 뚫은 오브젝트를 배치하기로 했다. 우선 결과물이다. 만들며 간단히 골든벨 맵도 만들어보았다. 위와 같이 표현하기 위해 가운데에 원이 그려져 있는 이미지를 준비한 후, 타일링을 주어 일정한 크기로 구멍을.. 더보기
[MetaEdu] 토큰번호 만들기!! 서론 Agora API를 통해 음성 및 영상통화를 구현하다가 channel ID를 줄 때 원래는 Photon의 방 이름을 주었는데, 한글이 들어가지 않는다는 사실을 알게되었다. channel ID는 방마다 고유해야 하기에 토큰번호를 만들어 넣어주기로 결정했다..! 본론 토큰번호는 Agora API 말고도 어딘가에 쓸모가 있지 않을까 해서 유틸리티 클래스에 넣기로 했다. 유틸리티 클래스란 정적인(static) 클래스로 자주 사용하는 로직이나 다양한 스크립트에서 사용되는 함수 및 변수에서 사용하는 방식이다. public static class UtilClass { private static readonly System.Random random = new System.Random(); private stati.. 더보기
[MetaEdu] 유니티에서 .glb 사용 & 스폰 효과 적용하기! 유니티에서 GLB파일 사용하는 방법 서론 Metaverse 3D Avatar Creator | Ready Player Me Create a full-body 3D avatar with a selfie and use it in the metaverse. Developer? Integrate our avatar platform into your app or game. readyplayer.me 현재 졸업작품에 캐릭터 모델이 아직 나오지 않았기에 Ready Player Me 라는 사이트에서 만들었던 내 아바타를 임시로 유니티에서 사용하고 있었다. Ready Player Me에서는 모델을 .glb 형식으로만 다운받을 수 있기에 유니티에서 사용하기 위해 방법을 찾아야 했다. 이전까지는 GLB to FBX, GLB.. 더보기
[MetaEdu] 포톤을 사용한 로딩 창 만들기! 서론 본 프로젝트에서는 "캠퍼스", "교실", "골든벨" 등 다른 씬을 로드할 때, 각 씬의 중복되는 기능을 모아둔 Petty란 이름의 씬을 Additive로 불러오도록 설계하였다. 필수적인 카메라나 캐릭터 생성 등을 수행하는데 시간이 필요하기 때문에 로딩창을 만들기로 했다. 본론 로딩창은 따로 씬으로 빼주지 않고, 싱글톤 패턴 및 DontDestroy를 Canvas(Loading)가 포함된 오브젝트에 적용하여 구현하였다. public class RoomChangeManager : MonoBehaviourPunCallbacks { /* Singleton */ private static RoomChangeManager _instance; public static RoomChangeManager Instan.. 더보기
[MetaEdu] New Input System의 키(바인딩)를 변경하는 방법! 메타버스를 기획하니 만큼 크로스 플랫폼을 고려해서 만들고자 했기에 New Input System을 사용하여 캐릭터를 조종할 수 있게 하였다. 키는 사용자들이 가장 많이 사용하는 기능이기에 UX적인 관점에서 사람들이 많이 사용하는 키가 무엇인지 조사해보았다. 하지만 게임마다, 사용자마다 선호하는 키가 꽤 많이 달랐기에, 키를 바꿀 수 있는 기능을 넣기로 결정했다. 단도직입적으로 말하자면, 이를 해결하기 위해서는 리바인딩 기법을 사용하면 된다. 하지만 리바인딩 기법을 위해 일일히 스크립트를 작성하기에는 어려운 부분이 있기에 유니티에서 미리 제공해둔 Rebinding UI라는 샘플 패키지를 사용하면 이를 쉽게 해결할 수 있다. 방법 더보기 1. Window ▶ Package Manager에 들어간다. 2. P.. 더보기
[MetaEdu] 캐릭터 얼굴에 그림자가 지던 현상 해결! 개발을 하던 중, 플레이어 캐릭터의 얼굴이 캐릭터의 머리 오브젝트로 인해 보기 싫게 그림자가 지는 것을 발견했다. 그림자는 Directional Light의 실시간 조명을 사용했다. 플레이어의 얼굴에 비춰진 그림자만 해결해야 하므로 조명들이 아닌 캐릭터 오브젝트에서 그림자를 조정해야 한다고 생각했다. Cast Shadows Mesh Renderer나 Skinned Mesh Renderer 컴포넌트를 보면 Lighting ▶ Cast Shadows가 있다. 이 Cast Shadows는 캐릭터의 그림자를 다른 물체에 씌울 것인가를 결정해주는데, 총 4가지의 속성이 있다. Off: 다른 물체에 자신의 그림자를 투영하지 않는다. On: 다른 물체에 자신의 그림자를 투영한다. Two Sided: 다른 물체에 자신.. 더보기
[MetaEdu] 플레이어의 이름 표시 본 프로젝트에서는 플레이어들을 구별하기 위해 각 캐릭터 위에 각각의 캔버스를 통해 이름을 표시할 수 있도록 하였다. 캔버스의 텍스트는 캐릭터가 생성된 후, 캐릭터의 스크립트에서 가져올 수 있도록 하였다. 본 프로젝트에서는 Photon 클라우드를 사용하여 멀티플레이를 가능하게 하였기에 각각의 LocalPlayer.NickName에 원하는 이름을 설정한 후, PhotonView의 이름을 통해 각각 플레이어의 이름을 적용시켰다. using Photon.Pun; public class PlayerController : MonoBehaviourPunCallbacks { public PhotonView PV; public TextMeshProUGUI 이름표; void Awake() { 이름표.text = PV.Is.. 더보기
[MetaEdu] Playfab을 사용하여 로그인씬 구현하기! 1. Playfab 홈페이지에서 회원가입 후 로그인! 2. 새로운 타이틀 생성 3. Playfab SDK 다운로드 Unity Playfab SDK: https://aka.ms/playfabunitysdkdownload Unity Playfab Extensions SDK: https://aka.ms/playfabunityextension ※ Playfab Unity3D 링크 더보기 Unity3D(C#) SDK - PlayFab PlayFab Unity3D(C#) SDK의 방문 페이지입니다. learn.microsoft.com 4. 유니티에 Playfab SDK 임포트 5. 편집기 확장에서 플레이팹 로그인 & 설정 ※ 로그인 및 설정 방법 더보기 6. UI 제작 및 관련 스크립트 ▶로그인 더보기 ▶회원가입 .. 더보기