실시간 게임을 제작하는 과정에서, 애니메이션 제어를 스크립트로 직접 구성하는 것보다

유니티에 구현된 메카님 시스템을 잘 사용하는게 시간이 절약된다고 판단하여 메카님 시스템을 통해 구현

그동안 구현하면서 느낀점들

 

설계 방향

 - 시스템에서는 상태값(Parameters)을 애니메이터에게 지속적으로 넘긴다.

 - animator.Play 등을 통해 강제로 특정한 노드를 플레이 시키지 않는다.

 - animator.speed는 히트프리즈와 같은 기능을 구현할때를 제외하고는 수정하지 않는다.

 - 상태전이는 animator의 Transition을 통해서만 구현한다.

 

장점

- 상태 관리를 애니메이터로만 하게 되므로, 코드의 수정이 적어진다.

- 애니메이션 블렌드 등 상태 전이할때 옵션을 세세하게 조정할 수 있다.

- Inspector를 이용해, 전이때 어떻게 애니메이션이 변경되는지 미리 관찰할 수 있다.

 

단점

- animator.speed가 0일때, 상태 전이는 이루어지지 않는다.

- animator override controller를 구현해도 세부적으로 Actor들마다 구현이 미묘하게 달라, 결국 각각의 애니메이터를 만들어야 하는 상황도 발생

- SubState 노드를 만든다면, animator.Play로 진입시, Default 노드의 기준을 알수가 없다.

 

추후 개선 할점

- 히트프리즈 (animator.speed = 0)를 구현한뒤, 특정 액션이 끝날때 애니메이션이 끝나는것을 맞춰야 한다면, 어떻게 설계할 것인가 ?

- node의 normalizeTime을, 코드에서 넘겨준 값으로 설정할때 blend와 상태전이는 어떻게 이루어 질것인가 ?

 

초기 게임을 만들때는 히트프리즈 또는 세부적인 애니메이션 재생을 고려하지 않고 만들어 졌지만 (초기에는 animator.Play(노드 이름) 으로 처리) 추후에 확장되면서 여러가지 변경이 이루어 졌다.

여러번 설계가 변경되면서 얻은 정보들을 적는다.

 

1. 애니메이션의 재생 속도는 animator.speed를 변경하는 것보다. Node의 Multiply를 변경하는것이 좋다.

애니메이터 창을 열어본뒤 노드를 선택하면 인스펙터에 다음과 같이 나타난다.

필드를 보면 Multiplier 라는 곳이 비활성화 되어있다.

animator 의 parameters에 float 파라미터를 한개 추가한뒤, 애니메이터 노드 (위 사진)의 Multiplier -> Parameter를 체크한다.

위의 사진은

1. animator의 파라미터에 WholeActive라는 파라미터를 float으로 만들었다.

2. Multiplier에 Parameter를 체크하고, WholeActive를 드롭다운 메뉴에서 선택했다.

 

실제로 사용할때는 코드에서 

animator.SetFloat(파라미터 이름, 값) 으로 설정한다.

* string으로 값을 넘기는것은 성능이 좋지 않기때문에

int hash = Animator.StringToHash("파라미터 이름");

aniamtor.SetFloat(hash, 값)로 처리한다.

 

위 사진의 Death의 Clip 길이가 2초이고, WholeActive의 값을 2로 설정하면

2배의 속도로 재생된다. (1초동안 애니메이션이 재생됨)

 

처음 써보기 전에는 애니메이터가 정확하게 예상한대로 시간을 맞춰줄까 ? 의심했지만.

사용해보니 잘 맞춰춘다.

 

2. 애니메이션이 중간에 멈추거나 다른 동작으로 자주 바뀐다면, Trigger보다 Bool 값을 통해서 전환하는게 유리하다.

이동중에 공격을 하거나, 공격 도중 움직이면 애니메이션이 Stand로 돌아가야 하는 등, 실시간으로 상태가 자주 바뀐다면, Transition을 할때 Bool을 통해서 하는게 유리하다.

 

다음과 같이 Transition (화살표 선)을 클릭하면, 조건을 설정할 수 있는데

다음과 같이 Bool 값을 통해서 전이하는게 유리하다.

이렇게 처리하면

 

1] 공격이 시작될때 animator에 true를 전달

2] 공격이 끝나면 animator에 false를 전달.

3] 공격 도중, 중단한다면 animator에 false를 전달.

 

false일때 재생중인 노드를 나오도록 설정하면, 편리하다

 

3. 상태전이가 동시에 여러번 일어날때, Interruption Source 옵션을 활용한다.

다음과 같은 상황을 예시로 들어보자.

상황 : 모든 Transition (상태 전이)은 Blend가 0.2초로 설정되어 있다.

1] 현재 Move 애니메이션을 재생하고 있다.

2] 멈춘다음 바로 공격을 한다. (Move -> Stand -> Atk_02)

 

별도의 설정을 하지 않았다면, 실제로 코드는 공격을 실행하고 있지만 (파라미터의 값도 변경되어 있지만) 애니메이터는 Move -> Stand로 전이를 하는 중이다 (0.2초가 지나지 않아서)

하지만 일반적으로 다른 파트에서는 공격을 시작했으니 Atk_02가 바로 재생되기를 원한다.

 

이럴때는 Move -> Stand 로 향하는 Transition (화살표) 를 클릭 한뒤 다음과 같이 설정하자.

Settings 에서 Interruption Source를 Next State로 설정한다.

Animator Interruption Source로 검색하면 더 많은 내용이 나오지만

간단하게 설명하자면

 

현재 Transition중일때, 다음 Transition 조건에 해당된다면 현재를 건너뛰고 바로 다음으로 가는것이다.

ex) Move -> Stand로 Transition 중일때, Stand -> Atk_02로 Transition이 가능한 상태라면 Atk_02로 바로 전이를 시작한다.

 

이때 Blend는 현재를 기준으로 진행되기 때문에 부자연스럽지 않다.

=> Move의 애니메이션 마지막 상태에서 Atk_02로 블렌드

'프로그래밍 > Unity (유니티)' 카테고리의 다른 글

WWW Request (post)  (0) 2018.09.05
Unity 다른 이름 앱 빌드  (0) 2018.07.20

S3에 있는 파일을 EFS로 옮겨야 되는데 AWS CLI를 사용해야 되는 상황이 있다.


근데 내컴퓨터가 윈도우라서 AWS CLI를 사용해야 되는데 PowerShell이 반응이 없는 상황이 자주 나와서 ㅡㅡ...


이번에는 최근 마이크로소프트에서 리눅스를 잘 지원해주면서 생긴 꿀기능으로 AWS CLI를 실행해보자.


우리는 Windows Subsystem for Linux 를 이용할것이다.


먼저 참고한 문서들은 다음과 같다.


https://docs.microsoft.com/ko-kr/windows/wsl/install-win10

https://docs.aws.amazon.com/ko_kr/powershell/latest/userguide/pstools-getting-set-up-windows.html

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-linux-python.html

https://superuser.com/questions/1319047/cant-install-virtual-interpreter-in-pycharm-in-linux

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-linux.html


1. WSL 설치


시작에서 PowerShell을 오른쪽 클릭, 관리자 권한으로 실행한다.

그다음 명령어를 입력한뒤 엔터

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux


이러면 재부팅이 된다. 정상적인 것이다.

다음 재부팅이 끝났으면 마이크로소프트 스토어에서 Ubuntu 를 설치한다.


우린 이제 이 우분투로 AWSCLI를 사용할 것이다.


2. Python, PIP 설치하기


AWS CLI를 설치하기 위해서는 Python과 PIP가 필요한데 이것들을 먼저 설치해보자.

우분투는 방금 깔아서 텅 비어있기 때문에 설치해줘야 한다.


- Python 설치

우리는 Ubuntu 이기 때문에 이 명령어로 설치한다.

sudo apt-get install python3


다음과 같은 명령어로 잘 설치되었는지 확인한다.

python3 --version


주의 : 파이썬3를 설치했기 때문에 대부분 명령어에서 python을 치라고 하면 python3로 바꿔서 써줘야 된다.


- PIP 설치

파이썬 스크립트를 하나 받는다..

curl -O https://bootstrap.pypa.io/get-pip.py

※ 0이아니라 대문자 O임


파이썬 스크립트 실행할때 필요한 유틸을 받는다

sudo apt-get install python3-distutils


스크립트를 실행해서 PIP를 다운로드, 설치한다.

python3 get-pip.py --user

여기까지 PIP 설치 완료


3. PATH 설정하기

이제 PATH를 연결해 보자.

export PATH=~/.local/bin:$PATH

해당 커맨드를 한번 실행한뒤

source ~/.profile

커맨드를 실행한다.


pip --version

했을때 에러없이 pip 숫자 ~~~ 버전이 이렇게 나와야 한다.


4. AWSCLI 설치

pip를 통해서 설치한다.

pip install awscli --upgrade --user


aws --version으로 정상 설치됬는지 확인한다.


5. 명령줄 경로에 AWS CLI 실행파일 추가


이과정까지 하면 설치 끝


PowerShell은 그냥 못쓴다고 생각하고 리눅스에 적응하는게 나은것 같다.

원래 레이지 소사이어티 3중날을 사용하고 있었는데

이번에 레소 패밀리 신청한게 되서 5중날을 사용해 보게 되었다.


일단 나같은 경우

1. 면도를 자주 하지 않는다. (1주일에 한번 할까말까 ?)

2. 일회용 면도기는 너무 구림 (파란 막대기에 윤활유도 엄청 없고 ... 특히 분리수거 하거나 버릴때 위험한적이 있어서 꺼려짐)

3. 그렇다고 떨어질때마다 마트에 가는것도 귀찬음 (최근에 면접을 봐야하는 상황이 있었는데 면도날이 없어서 귀찬은적이 ..)

4. 면도기에 녹이 슨적이 많음 (매일 매일 사용하는게 아니다 + 습기에 자주 노출되어 있는 상태)


이러다 보니 편리, 위생상 레이지 소사이어티를 쓴게 시작이었다.


면도를 엄청 자주는 안하다보니 비싼 면도기 사면 돈이 아깝다가도

막상 면도할때 면도기가 너무 구리면 짜증나는게 사람마음이라 생각함 (?)


처음에는 5중날 테스트만 해보고 나는 3중날 계속 써야지 ~ 하다가

막상 써보니 기대이상이라 사진도 좀 찍어봤다.


프로 리뷰어는 아니라 찍은 사진이 고급스럽지는 않지만 (^^;) 나름 열심히 책상에 찍어봤음



처음에 3중날 샀을때랑 한결같이 이런 무지 종이박스에 담겨서 온다.



상자를 열면 이런식으로 담겨있는데

사실 나는 테스트 라길래 면도날만 보내줄줄 알았더니 면도기까지 같이와서 좀 놀랬음



면도기랑 면도날인데 완전 사기다 ㅡㅡ

아니 3중날때 준 면도기보다 너무 좋은거 아닌가 이거

무게감이 묵직해지고 손에서 잘 안미끄러지는 재질로 손잡이가 변경됬다.

날은 3개에서 5개로 늘어나고

기존에는 위쪽에만 윤활유 (주황색)가 있었는데

이번에는 위에는 윤활유 아래쪽은 회색 고무패드 같은게 생겼다.



기존 면도기와 비교해보면 딱봐도 고급형 면도기가 훨씬 좋은게 보인다.

하긴뭐 그러니까 고급형이라고 내놓은 거겠지만.



옛날면도기에 5중날을 끼울수도 있고 새 면도기에 3중날을 끼울수도 있음.

테스트 한다고 면도기까지 같이 보내주길래 설마 예전에 한 약속을 어기는건가.... 했는데 (예전에 3중날 면도기에 5중날도 끼울수 있다고 광고했었다)

끼워보니 잘끼워져서 다행

기존 면도기 쓰던 사람들도 5중날 사도 괜찬을거 같다.



날을 자세히 보면 많이 바뀐거를 알 수 있다.


사실 이렇게 볼때까지만 해도 얼마나 차이가 나겠어 했음 (테스트만 하고 날먹할 계획이었다)


사용해보니 차이점이 확실히 드러나는데


1. 3중날에 비해서 되게 부드러워 졌다.


윤활유 부분?이 더 줄어든거 같아서 전보다 더 뻑뻑하려나 걱정했는데 더 부드럽게 밀려서 좀 신기했음

돈값은 하긴 하나보다 (?)


2. 면도날의 면적이 넓어져서 밀착감이 좋아짐


전은 좀 가볍고 착붙는느낌이 강하지는 않았는데

5중날의 경우는 피부에 좀더 착 붙는 느낌이다.

이거는 날이 늘어난 이유도 있지만 주황색의 윤활유 부분이 많이 줄어든 영향도 있는거 같다.


3. 가격이 생각보다 싸서 놀람


2개월에 1번 배송하는 플랜을 사용하고 있는데 8900원에 4개 배송이면 괜찬은거 같다.

와디즈에서 좀더 싸게 파는게 있었는데 그걸 놓친게 좀 아쉽지만

되게 괜찬은듯


(근데 지금보니 4달에 한번 배송 플랜도 생겼네 ...? 근데 4달에 한번 배송이면 1달에 1개날로 면도인데 이건 좀 무리인거 같고 2달에 한번이 나에겐 합리적인듯)


5중날로 넘어가는걸 상당히 고민해 봐야될거 같다.


난 3중날만 쓸거야 ! 하더라도 처음에는 5중날로 시작해서 새로바뀐 흰색 면도기를 받은다음에

그다음부터 3중날만 정기배송으로 구매해서 쓰는것도 상당히 괜찬을듯

'일상' 카테고리의 다른 글

라이젠(Ryzen) 5 발표 행사 후기  (0) 2017.04.13

+ Recent posts