유니티 실습
현재 사용하고 있는 무료 에셋 :
https://assetstore.unity.com/packages/3d/characters/unity-chan-model-18705
Unity-Chan! Model | 3D 캐릭터 | Unity Asset Store
Elevate your workflow with the Unity-Chan! Model asset from unity-chan!. Find this & other 캐릭터 options on the Unity Asset Store.
assetstore.unity.com
애니메이션 구현
오늘은 에셋에 포함되어 있는 걷는 모션을 구현해보았다.
① 에셋의 애니메이션에서 원하는 애니메이션을 선택한 후 ctrl + D를 눌러 복제한다.
수업에서는 앞으로 뛰는 모션, 기다리는 모션, 뒤로 걷는 모션 3개를 골랐다.

애니메이션 보는 법
해당 모션을 클릭하면 인스펙터 창에 재생 버튼이 있는 창이 뜰 것이다.
(안 보일 경우, 인스펙터 맨 밑에 숨겨져 있는 것이다. 해당 모션이 적혀져 있는 줄을 위로 끄집어내자)
재생 버튼을 클릭하면 모델이 애니메이션대로 움직일 것이다.
모델 바꾸는 법

사람 모양 아이콘을 누르고 other...을 누른 뒤 원하는 모델을 선택하면 된다.
② Animations 폴더에 복제한 애니메이션들을 보관할 새로운 폴더를 만든다. (선택사항)
③ 플레이어의 Animator 컴포넌트의 Controller를 클릭하여 Animator 창으로 들어간다.
④ Creat State -> From New Blend Tree 를 눌러 새로은 스태이트를 생성한다.
(다른 스태이트 이미 있어서 모두 지운 후 진행하였다)
⑤ Blend Tree를 클릭 후 인스펙터 창의 Motion에 복제해둔 애니메이션들을 등록한다.

⑥ Threshold 와 속도를 원하는 대로 조정한다.
Threshold : 애니메이션의 그래프 상의 위치
위의 사진에서는 Speed가 -0.3~0.3 값 사이에서만 움직이고,
-0.3~0 값에서는 WALK00_B 와 WAIT00가, 0~0.3 값에서는 WAIT00 와 RUN00_F 가 겹치게 된다.
⑦ 플레이어에 새로운 스크립트를 추가한다.
⑧ AudioSource 변수를 public으로 선언하고, 오디오 소스를 재생하는 함수를 생성한다.
public AudioSource FootSoundSource;
public void OnFoot()
{
if ( FootSoundSource != null)
{
// 오디오 소스 재생
FootSoundSource.Play();
}
}
⑨ 애니메이션을 클릭하여 애니메이션 창에 들어간 후,
소리가 들어가길 원하는 초를 클릭하여 흰 선을 놓은 뒤, 'Add Event' 버튼을 누른다.

⑩ Function 에 방금 작성한 함수를 선택한다.
결과
유니티 이론
비동기 프로그래밍
: 성능 저하 방지, 긴 작업 병렬로 실행하여 게임의 프레임 속도 유지에 사용하는 프로그래밍 기법이다.
1) 코루틴
반 비동기. 가볍게 사용하는 비동기 프로그래밍.
IEnumerator를 반환하고 StartCoroutine 메소드를 사용하여 시작한다.
float waitTime = 0.1f;
void Start()
{
// 코루틴 시작
StartCoroutine(TestCoroutine());
}
IEnumerator TestCoroutine()
{
// 대기
yield return new WaitForSeconds(waitTime);
Debug.Log("Coroutine done.")
}
● StartCoroutine : 코루틴을 시작한다.
● yield return null: 한 프레임 후 다음 코드 실행
● yield return new WaitForSeconds() : 몇 초 뒤에 다음 코드 실행
현재는 async 말고 코루틴만으로 포폴을 만들어도 충분하다고 하셨다.
2) async 와 await
앞에서 main을 실행할 동안 뒤에서 다른 것을 실행한다.
주로 게임 중 로딩이나, 보스전 직전 보스 소개 등에 쓰인다.
비동기할 함수에 async 를 붙이고,
함수 안 코드 앞에 await Task.Run(() => 실행할 함수); 를 작성하면 된다.
async void TestRun()
{
await Task.Run(() => TestAsync());
Debug.Log("AsyncFinish");
}
void TestAsync()
{
for (Int64 i = 0; i < 50000000000; i++)
{
// 실행 코드
}
}
float startTime = 0.0f;
void Start()
{
startTime = Time.realtimeSinceStartup;
TestRun();
Debug.Log("AsyncFinish");
// main 실행 하는 동안 뒤에서 다른 동작을 하는 것
}
고찰
취업 준비 개발자의 고충이라는 에셋을 다루는 법을 알게되어 좋은 것 같다.
확실히 에셋을 잘 사용하지 못했던 예전에 비해 작업물의 때깔(?)도 좋아지고,
2D에서 벗어나 견문이 넓어진 것 같아 좋다.
비동기 프로그래밍에 대해 아직 잘 이해하지 못했다.
내일이 휴일이니 비동기 프로그래밍과 코루틴, async와 await에 대해 자세히 알고 가야겠다.
'부트캠프' 카테고리의 다른 글
[멋쟁이사자처럼 유니티 TIL] 대리자(delegate)와 이벤트 실습, 공격 모션 구현 (+ (Ctrl + H), 리타겟팅) (1) | 2024.06.12 |
---|---|
[멋쟁이사자처럼 유니티 TIL] node.js을 통한 비동기 서버 구축 구현 (+ 서버 구축 관련 용어 정리, 벡터와 라디안으로 회전 구현, 비동기 프로그래밍) (0) | 2024.06.08 |
[멋쟁이사자처럼 유니티 TIL] 에셋을 이용한 보석 먹기 게임 구현 ( + 파일 경로, 링큐 등) (1) | 2024.06.04 |
[멋쟁이사자처럼 유니티 TIL] 회전 및 점프 구현(+FixedUpdate와 Update의 차이) (0) | 2024.06.03 |
[c#] 별 찍기 + 피라미드, 역피라미드, 왼쪽/오른쪽 화살표 (0) | 2024.05.29 |