일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 해시
- 알고리즘
- FSM
- 포톤
- UE4
- 순열
- Photon
- Firebase
- Inventory
- 언리얼엔진
- 스택
- 유니티
- BFS
- 구현
- 프로그래머스
- Unity
- UnrealEngine
- unityui
- c#
- Unity3d
- 스파르타내일배움캠프TIL
- C++
- 내일배움캠프
- 워크플로
- Unity2D
- 스파르타내일배움캠프
- 유클리드호제법
- QueryDSL
- 문자열
- 이분탐색
- Today
- Total
목록Unity (16)
개발 낙서장
애니메이터의 boolean형 파라미터로 isMoving이 있다고 하자. 해당 파라미터가 true가 되면 애니메이션 State가 Move로 바뀌고 false가 되면 Idle로 바뀌게 구성을 해놓았을 때, 코드에서는 이렇게 호출할 것이다. public void Idle() { _animator.SetBool("isMoving", false); } public void Move() { _animator.SetBool("isMoving", true); }이렇게 애니메이터의 파라미터를 문자열로 전달하게 되는데, 이 과정에서 매번 문자열 -> 해시로 변환이 이루어지기 때문에 호출이 빈번할수록 성능에 안 좋은 영향을 끼치게 된다. 따라서 사용하는 것이 Animator의 StringToHash 메소드인데 애니메이터의 ..
유니티를 기반으로 개발한 2D 게임이고 포톤 서버를 이용하고 파이어베이스를 연동한 실시간 1:1 대전 게임이다 회원가입, 로그인, 유저 정보, 채팅 시스템, 무기와 업그레이드 선택 등의 기능이 구현돼 있다. https://github.com/SeungJun-Kwon/Unity2DShootingGame 로그인 회원가입과 로그인은 FirebaseAuth와 FirebaseFirestore에서 검증해 통과하면 성공하는 방식으로 구현했다. 둘 다 방식이 비슷하므로 로그인을 기준으로 설명하면 ID와 PW가 잘 입력이 됐는지 FirebaseAuth의 SignInWithEmailAndPasswordAsync가 잘 진행이 됐는지 해당 유저의 정보가 FirebaseFirestore에서 로드가 되는지 3가지 검증 과정을 거..

아이템을 누르면 마우스 위치에 해당 아이템 복사본이 생성되어 마우스를 따라다니고 이걸 이동, 드랍, 장착 등의 동작에 사용하려고 했는데..... 이런 어처구니 없는 상황이 발생해버렸다. RectTransform.localPosition = Input.mousePosition; 딱 한 줄의 간단한 코드라 뭐 어디 잘못된 것도 없어서 좀 당황했다. 그냥 position으로도 바꿔보고 anchoredPosition으로도 바꿔보고 오브젝트 설정도 바꿔보고 했는데 잘 안돼서 이거저거 바꿔보고 검색해본 끝에 해결했다. 먼저 내 UI 세팅이다. 메인 카메라에 의해 렌더링돼도록 했고 여러 해상도에 반응하기 위해 Canvas Scaler를 달아주었다. 여기서 아마 저 Render Mode가 Screen Space - C..

구현 동기 딱히 동기랄 것도 없다. 아이템이 없는 게임은 거의 없다! 기본 구조 스크립트는 크게 3개 정도로 구성했다. Item의 정보를 담는 클래스 UI에 보여지는 아이템 슬롯 클래스 인벤토리 전체를 관리하는 클래스 가장 중요한 클래스는 인벤토리 전체를 관리하는 클래스이다. 여기서 인벤토리 관련 모든 동작(Save & Load, 정렬, 이동 등)이 이루어지기 때문에 짜임새 있게 작성해야 한다. ItemSO 어차피 아이템의 고유 ID 혹은 이름으로 정보를 저장하고 불러올 것이기 때문에 정말 기본적인 정보들만 기입했다. 이 ItemSO는 나중에 파이어베이스의 파이어스토어에서 정보를 가져와 캐싱하는 스크립트가 될 것이다. ItemSlot public class ItemSlot : MonoBehaviour, ..
회원가입과 로그인 기능을 다 구현하고 나서 동시에 여러 클라이언트가 접속이 되는지 확인하기 위해 빌드하고 회원가입과 로그인을 시도했었다 근데 처음 접속한 클라이언트에서는 잘 되고 나머지 클라이언트는 시도를 하자마자 아무런 메세지도 없이 그냥 프로그램이 종료되는 현상이 발생했다 도대체 왜 이런 거지 하고 스크립트도 이거저거 수정하고 파이어베이스도 만지작거리고 별 짓을 다 해봐도 계속 같은 현상이 반복될 뿐이었다 진짜 몇 시간동안 해결도 못하고 미칠 노릇이었는데 유니티 에디터 로그를 뒤늦게서야 확인했더니 다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다. 이런 메세지가 있는 것이었다.... 그래서 알아보니까 각 컴퓨터마다 Firestore 경로에 LOCK이라는 파일이 있고 어떠한 ..

구현 동기 유니티 2D를 공부하면서 간단한 멀티 시스템도 같이 공부해보자 싶어서 포톤 서버로 2D MMORPG 쪽으로 만들어보자고 생각했다. 2D MMORPG 하면 정말 여러 가지 게임이 있지만 가장 대표적으로는 역시 메이플스토리가 가장 먼저 떠오른다. 메이플 스토리의 멀티 시스템은 메인 로비에서 서버(스카니아, 제니스 등등)를 선택하고 채널을 선택한 이후 캐릭터를 선택하면 게임을 플레이할 수 있다. 나는 기초적인 멀티 시스템만 구현할 것이기 때문에 채널을 선택해서 게임 화면에 진입하는 것까지만 구현하려고 한다. 채널 유니티에서 간편하게 사용할 수 있는 서버 패키지인 포톤이 있다. 패키지를 프로젝트에 임포트한 후 가이드에 따라 사용하면 된다. 포톤 서버는 기본적으로 "룸"을 기반으로 동작하는 네트워크이다..

저번에는 정말 간단하게 캐릭터 좌우 움직임과 점프를 구현했다. 그럼 움직임은 여기서 끝인가? 하면 절대 절대 아니다. 나중에 멈춰있어야 하는 동작, 일정 거리만큼 움직이는 동작 등 이동에 제약이 발생하는 동작들이 추가될 경우 문제가 많아질 것이다. 그럼 이것을 어떻게 해결하냐? 유한 상태 머신(Finite State Machine)을 통해 해결할 수 있다. 유한 상태 머신(Finite State Machine) 유한 상태 머신이란 간단하게 오브젝트에 유한한 상태를 부여하고 입력에 따라 현재 상태를 변화시키며 각 상태에 맞는 출력이 이루어지는 패턴? 모델?이라고 한다. 자세한 설명은 다른 블로그나 커뮤니티에 많이 있으니 생략하고 바로 구현해 보자 public enum State { IDLE, MOVE, A..

이번에 간단한 3D 게임 포트폴리오도 허접하긴 하지만 끝났고 나중에 실무에 들어가게 되면 다양한 분야의 개발을 할 수 있어야 하니 이번엔 2D에 대해 공부해야겠다고 생각이 들었다. 여러 에셋들은 대부분 유니티 에셋 스토어에서 받아서 사용했다. 캐릭터 일단 키 조작을 통해 움직이는 캐릭터를 구현해 보도록 하자. 움직임에는 크게 두 가지 방법이 있는 것으로 알고 있는데 하나는 transform을 이용하는 방법, 하나는 Rigidbody 물리 효과를 이용하는 방법이 있다. 둘 중 하나만 사용하던 두 가지를 전부 사용하던 일단 필요한 컴포넌트들은 부착해줘야 한다. 유닛 2D 모델에 Collider 2D와 Rigidbody 2D를 부착하고 값을 간단히 조정해 주면 준비는 끝났다. Rigidbody2D _rigid..