팀 프로젝트 회의
Player 행동 구현 어떻게 할 것인가?
팀에서 나온 의견
1) 상태 패턴 (상태 머신 또는 FSM) 사용
2) 엔진 내의 애니메이터 사용
코드 작성과 엔진 자체 해결방법 중 어디에 비중을 더 많이 둘 것인지에 대해 논의했다.
1, 2 번 방법 중 하나만 사용하는 것은 어려워보였다.
왜냐하면 행동에 대한 로직은 코드로 구현해야하고, 각 행동 간 연결은 애니메이터로 연결하는 것이 자연스럽기 때문이다.
상태 패턴은 유니티 게임 개발에서 사용하는 대표적인 패턴인데,
특히 이번에 개발하는 AOS 장르처럼 캐릭터의 행동 변화가 잦은 경우 사용하면 좋다.
상태 패턴은 플레이어의 여러가지 동작을 각각의 객체로 보관하기 때문에 수정/추가/삭제 등이 용이하다.
또한 조건문을 줄임으로써 코드를 간결하게, 가독성 높게 유지할 수 있다.
다만, 각 객체를 생성하는 과정에서 관리할 클래스가 증가한다는 점에서 유의해야 한다.
코드 작성의 복잡성을 줄이기 위해 행동과 관련된 UML을 잘 짜는 것이 중요하다.
행동 구현과 관련해 공부하던 중 블렌드 트리에 대해 알게 되었다.
블렌드 트리
<학습 자료>
https://docs.unity3d.com/kr/530/Manual/class-BlendTree.html
블렌드 : 두 가지 이상의 모션을 자연스럽게 혼합하기 위한 애니메이션 방식.
유니티에서 오브젝트에 자연스러운 애니메이션을 넣기 위한 방법은 크게 두 가지이다.
(1) Transitions : 일정 시간 안에 어떤 애니메이션 상태에서 다른 애니메이션 상태로 매끄럽게 전환하는데 사용. 이는 애니메이션 상태 머신의 일부이다.
(2) Blend Tree : 여러 개의 애니메이션을 블렌드. 각 애니메이션의 일부분이 서로 다른 비중으로 합쳐져서 매끄러운 결과를 도출. 블렌딩 파라미터를 사용해 효과를 제어함. 이 파라미터는 애니메이터 컨트롤러_애니메이션 파라미터 중 하나이다. 모션을 자연스럽게 블렌딩하려면 성질과 타이밍이 유사한 모션끼리 합쳐져야 한다. Blend Tree는 애니메이션 상태 머신의 state 종류이다.
애니메이션 간 블렌딩은 '선형 보간'을 사용해 이루어진다.
(애니메이션의 양은 블렌딩 파라미터에 의해 가중된 개별 애니메이션의 평균치).
* 선형 보간법 : 1차원 직선상에서 두 점의 값이 주어졌을 때, 그 사이의 값을 추정하기 위해 직선 거리에 따라 선형적으로 (비례적으로) 계산하는 방법이다.
즉, 선형 보간을 사용한 블렌딩은 각각 애니메이션 요소를 비례적으로 계산하여 결과물을 도출한다.
'게임 개발 일지 > 내일배움캠프 TIL' 카테고리의 다른 글
[C#] 구조체와 클래스 / GC (0) | 2024.01.22 |
---|---|
[C#] Coroutine (0) | 2024.01.19 |
[Unity] Button의 transition (0) | 2024.01.17 |
[Unity] LayerMask, Main Camera의 Z값이 주로 -10인 이유 (0) | 2024.01.16 |
[CS] float 와 int / ref 와 out / 접근제한자 (0) | 2024.01.15 |
댓글