development diary
When: 1학년 9월 10일
Developed: 개발한 것
- 프로젝트 : 전생했더니 카드를 던지게 된 건에 대하여
- 소요 시간 : 4일
- 설명 : 게임에서 뽑기를 구현하려고 했는데 게임의 테마인 카지노와 뽑기를 연결할 수 있는 요소가
룰렛이나 슬롯머신 말고는 떠오르지 않았기 때문에 처음엔 그냥 여타 게임과 다를 바 없는 평범한 뽑기를
기획하였습니다. 그런데 카드 디자인을 하기 위해 레퍼런스를 검색하던 중 카드로 야바위하는 gif를 보았는데,
처음 보자마자 뽑기 기획을 야바위로 바꾸었습니다. 일단 룰렛이나 슬롯머신은 아트 에셋이 필요한데,
아무리 찾아봐도 맞는 에셋이 없었기 때문에 지금 상황에서 딱 맞는 대체 방안이었습니다.
카드를 섞는 방법도 2개를 서로 바꾸기, 하나씩 이동하기, 무작위로 바꾸기 등 다양하므
다양한 패턴을 만들어서 랜덤으로 계속 패턴 중 하나를 뽑아 적용 패턴이 끝나면 다시 랜덤으로
적용하는 방식으로 구현하게 되었습니다. - 사용한 코드 : (https://github.com/kimyongmin519/2025NinzaTeamProject2/blob/main/2025NinzaTeamProject2/Assets/69.Member/Hwan/0002_Script/002_Etc/CardPattern.cs)
- 코드 설명 : 일단 CardPattern이라는 추상 클래스를 만들어서 ScriptableObject를 상속받게 하고,
그 자식 클래스는 DOTween으로 카드를 이동하는 BuildSwapSeq() 메서드를 사용할 수 있게 하였습니다.
추상화하기 위해 MovePattern() 메서드의 구현을 abstract 키워드로 강제하였고
StartPattern(시작할 때의 움직임), SwitchPattern(짝수개의 카드를 서로 바꾸기),
RandomChangePattern(한 칸씩 이동), RandomPattern(무작위 이동)을 구현했습니다.
구현 방식은 MovePattern() 메서드에서는 랜덤으로 선택된 n개의 카드 List를 매개변수로 받는데,
그 리스트를 ToList로 복사한 cardsCopy라는 리스트에서 이미 움직인 카드는 Remove로 지워서
랜덤 인덱스로 카드를 선택할 때 따로 움직인 카드인지 확인하는 과정을 없앴고, for문을 주로 사용하여
움직임을 구현했습니다. CardsPattern이 ScriptableObject를 상속받기 때문에 그 자식인 다른 클래스들도
SO로 만들 수 있어 이것들을 SO로 만든 다음 속도를 변수로 조정하고 Pattern List라는 패턴들을 담을
List를 가진 SO를 따로 만들어서 그 List에 담아 구현하였습니다. - gif :

Result: Lobby 화면 기획이 계속 갈아엎어져서 시간이 오래 걸렸지만, 그래도 그냥 운뿐인 뽑기에서 벗어나서 신박한 요소를 융합한 것이 좋은 시도라고 생각돼서 좋았습니다.
'포트폴리오 > 개발 일기' 카테고리의 다른 글
| [개발 일기] 공격 범위 표시하기 (0) | 2025.11.04 |
|---|---|
| [개발 일기] 프로토타입 만들기 (0) | 2025.10.27 |
| [개발 일기] 앵그리버드 포물선 (0) | 2025.10.27 |
| [개발 일기] 스테이지 선택 화면 만들기 (2) | 2025.08.15 |