[Unity/C#] 버프, 디버프 시스템입니다. 근데... 비트 마스킹을 곁들인.
·
개발/Unity
개요이번 글은 [Unity/C#] 포션 시스템의 후속 글입니다. 원활한 이해를 위해 글을 읽고 와주시면 감사하겠지만 귀찮다면 읽지 않아도 괜찮습니다.    아이디어 정리일단 가장 저명한 게임인 마인크래프트를 예시로 들어보자면 버프와 디버프는 다음과 같이 중첩되어 있는 것이 일반적입니다. 이것을 관리하기 위해서 그냥 List 자료구조를 쓰는것도 괜찮지만 만약 특정 버프, 디버프가 들어있는지 판단을 해야한다면 그것을 판단하기 위해 탐색을 해야하기 때문에 O(n)의 시간 복잡도가 발생합니다.물론 리스트가 길어봤자 얼마나 길겠냐마는 더 좋은 방법이 있는데 굳이 안 쓸 이유야 없잖아요? 그래서 비트 마스킹 기반으로 현재 버프, 디버프의 상태를 저장하고 구현부는 또 따로 돌려주기로 했습니다. 일단 각각의 상태이상들..
[Unity/C#] | 포션 시스템
·
개발/Unity
개요반갑습니다.오랜만에 개발일지로 찾아뵙습니다. ...하지만 개발일지라기보단 이미 개발된걸 되짚어보는 글에 가깝습니다. 각설하고, 시작하죠.    포션을 왜?한동안 프로젝트 활동이 없던 제가 왜 갑자기 개뜬금없이 포션 시스템을 만드느냐 하면?복잡한 사정이 겹치고 겹쳐 현재 결선에 올라가있는 STA+C팀에 개발자로서 참여하게 됐습니다. 그래서 그 게임의 메인 기믹인 포션을 제가 맡아 개발하기로 했죠. 대충 이런 포션들입니다.   원래 버프 디버프 시스템도 작성했지만 글이 너무 길어질것 같아 일단 떼어놓고,이제 이걸 어떻게 만들었는지 하나하나 풀어보죠.    아이디어 정리기본적으로 포션을 각자의 이펙트마다 하나하나 클래스를 만들어 관리하는건 비효율적이라고 생각했습니다.(ex : GrowingPotion, P..
[Unity/C#] | Animation Event 와 비트 마스킹
·
개발/Unity
개요프로젝트를 제작하는 도중에 애니메이션 클립에서 한번에 이벤트를 여러 개 호출해야 하는 일이 생겼습니다. 지금 플레이어는 Animator 기반의 FSM 구조를 사용중이고 그 FSM 구조는 이 글에서 자세히 알아보실 수 있습니다.https://sundg0162.tistory.com/36 UNNAMED | 네번째 프로젝트 # 3 : Player FSM개요정신 나갈 것 같습니다.      FSM 구조원활하게 Player의 움직임을 제어하기 위해 FSM을 사용했습니다.애니메이터 기반의 FSM으로 애니메이터와 동기화 되기 때문에 자연스러운 애니메이팅 +sundg0162.tistory.com  아무튼 이 구조를 사용할 경우 플레이어의 Animation이 끝났는지를 알아낼 수 없기 때문에 Animator의 이벤트 ..