-
오늘은 하루종일 강의 듣고 완료하는 것을 목표로 했습니다.
최종 프로젝트에 대한 이적시장도 열려서 눈여겨보느라 완료는 못했습니다. ㅠㅠ
4팀 정도 구인글을 올리셨던데 이미 2팀은 정원이 찼더라구요. 추가 인원 1명을 구하는 것이였습니다.
근데 매우매우 특별한 일이 아니면 추가 인원 안해주신다고 하셔서 무슨 내용일까 궁금하긴 했지만 물어보지는 않았습니다.
한 팀은 정확하게 어떤걸 할지 안정해놓은 것 같아서 보류했고 남은 한팀은 할 것을 정확하게 명시해주셨기 때문에 여쭤봤는데 흥미롭더라구요. 그래도 바로 결정은 안했습니다.
저 하겠습니다! 했다고 다른 팀들 더 나오면 저것도 궁금한데.. 할 것 같아서 궁금한 점만 여줘보고 좀 더 생각해보려고 합니다.
구인글 추가적으로 올라오는 것들 보고 결정해보려고 합니다.
강의 내용 중에서 몇가지 정리해볼까 합니다.
1. 구성
보통 게임에는 player, enemy 두 종류가 있습니다.
두 종류가 모두 사용할 수 있도록 공통된 것을 interface와 abstract class를 이용해서 만들어줍니다.
이것을 playerStateMachine과 enemyStateMachine이 각각 상속 받습니다.
두 stateMachine은 앞으로 만들 state에 대한 값들을 정의해줍니다.
state들은 종류마다 한 script를 가지고 있고 script 또한 각 종류의 stateMachine에 연결되어있습니다.
state들은 종류마다 한 script를 가지고 있다고 했는데 모두 baseState를 상속받습니다.
baseState는 virtual을 이용해서 override 시키거나 virtual이 없거나 합니다.
이런 식으로 꼬리를 문다해야할까요?
상속받은 것과 상속에 연결되어있는 값들을 가져와서 구성해둡니다.
본인이 직접 만든 코드가 아니라면 따라 찾을 수는 있겠지만 그것을 이용해서 새로운 코드를 만든다? 이부분은 좀 복잡할 것 같습니다.
협업을 하게 된다면 주석은 필수.
2. State
상태에는 일반 상태, 걷기, 달리기, 때리기 등이 있습니다.
이것들을 크게 묶어서 땅 위에서 할 수 있기 때문에 Ground에 포함 될 수 있습니다.
점프나 떨어지는 것들은 공중에서 이뤄지는 것들이기 때문에 AirState에 포함 되구요.
Attack에는 일반 attack과 combo를 넣을 수 있습니다.
state에 따라 각각 공통되는 부분에 대한 큰 부분을 만들고 그를 상속받아서 좀 더 정리된 느낌을 받습니다.
또한 상태를 부모는 상태를 변화시키지만 자식은 상태를 변화시키고 싶지 않을 때, override를 통해서 상태가 변하지 않게 설정이 가능합니다. 물론 그 반대의 경우도 가능합니다.
이를 통해서 원하는 타이밍에 원하는 함수를 실행 시킬 수 있도록 할 수 있습니다.
+추가로 부모의 생성자에 매개변수(parameter)를 이용하게 된다면 하위 자식들도 생성자에 같은 매개변수가 필요합니다.
3. camera
Unity URP에는 cinemachine에 대한 것을 추가할 수 있습니다.
다운을 하게되면
cinemachine - virtual Camera
에서 Cinemachine collider을 Add Component를 할 수 있는데요.
간단하게 맵 바닥이나 장애물들을 카메라 view가 뚫을 수 없게 하는 것입니다.
바닥을 뚫어보려고 아래로 쭉내리거나 가려지는 벽으로 다가가게 되면 자동으로 줌인해줍니다.
Damping = 0.1로 지정해주면 가능!
4. Animation
sub-state machine 기능을 사용하게 되면 위에 state에서 정했던 큰 state를 기준으로 animation 조작에 관한 설정을 따로 해줄 수 있습니다.
state가 증가함에 따라 animation의 갯수도 증가하게 됩니다.
만약 sub-state가 없다면, idle 상태에서 jump, attack, run, walk 등으로 이동하는 transition이 많아질 것입니다. 그러면 나중에 animation 작업을 하다가 놓치는 부분이 분명 존재할 수 있습니다.
큰 기준으로 구분한 state에 맞춰 sub-state machine을 사용하면 state 안에 animation들을 넣어서 상태가 끝나면 무조건 exit으로 가도록 설정해주면 화면에 보이는 animation의 갯수도 줄어서 실수할 확률도 적어질 뿐더러 선이 그리 복잡하게 안생길 것입니다.
코드적인 부분은 정리하지는 않았습니다.
이해하려면 다시 꼬리물면서 올라가고 해야할 것 같아서 그건 그냥 보면 이해될 것 같기 때문에..
특별히 왜 이 함수는 만들었는지 설명하는 부분은 주석처리로 놓았습니다.