Top 10 유니티 2D 애니메이션 레이어 Top 2 Best Answers

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 유니티 2d 애니메이션 레이어 on Google, you do not find the information you need! Here are the best content compiled and compiled by the toplist.Experience-Porthcawl.com team, along with other related topics such as: 유니티 2d 애니메이션 레이어 유니티 상하체 분리 애니메이션, 유니티 애니메이션 여러개, 유니티 애니메이션 재생 스크립트, 유니티 3D 본 애니메이션, 유니티 애니메이션 끝나는 시점, 유니티 애니메이션 포지션, 유니티 2D 애니메이션, 유니티 2d 애니메이션 동시 재생


애니메이션 레이어 | 유니티
애니메이션 레이어 | 유니티


[압량(Amnyang)] #3. 2D 주인공 캐릭터 Idle, Walk, EyeBlink 애니메이션 클립 만들기

  • Article author: daekyoulibrary.tistory.com
  • Reviews from users: 16237 ⭐ Ratings
  • Top rated: 3.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [압량(Amnyang)] #3. 2D 주인공 캐릭터 Idle, Walk, EyeBlink 애니메이션 클립 만들기 그리고 애니메이터를 열어서, 애니메이션 레이어(Animation Layer)를 새로 하나 만들어줬다. 눈 깜빡임만 담당할 “Eye” … …
  • Most searched keywords: Whether you are looking for [압량(Amnyang)] #3. 2D 주인공 캐릭터 Idle, Walk, EyeBlink 애니메이션 클립 만들기 그리고 애니메이터를 열어서, 애니메이션 레이어(Animation Layer)를 새로 하나 만들어줬다. 눈 깜빡임만 담당할 “Eye” … 이전 글에서 눈 부위는 따로 머리 뼈대(Head Bone) 자식 오브젝트로 달아줬었는데, 원래라면 눈도 Photoshop 작업에서 따로 레이어(Layer)를 나눠서 한 PSB 파일에 같이 있는 게 좋긴 하다. /*  뼈대 자식으로 넣..
  • Table of Contents:

DIBRARY

[압량(Amnyang)] #3 2D 주인공 캐릭터 Idle Walk EyeBlink 애니메이션 클립 만들기 본문

티스토리툴바

[압량(Amnyang)] #3. 2D 주인공 캐릭터 Idle, Walk, EyeBlink 애니메이션 클립 만들기
[압량(Amnyang)] #3. 2D 주인공 캐릭터 Idle, Walk, EyeBlink 애니메이션 클립 만들기

Read More

[Unity3D] Animation – 유니티 애니메이션 레이어 사용하기 :: 베르의 프로그래밍 노트

  • Article author: wergia.tistory.com
  • Reviews from users: 39326 ⭐ Ratings
  • Top rated: 3.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Unity3D] Animation – 유니티 애니메이션 레이어 사용하기 :: 베르의 프로그래밍 노트 1. 애니메이션 레이어에 사용할 Animator Controller를 생성하고 그 이름을 Animation Layer라고 짓도록 하자. 2. 생성한 애니메이터 컨트롤러를 열면 … …
  • Most searched keywords: Whether you are looking for [Unity3D] Animation – 유니티 애니메이션 레이어 사용하기 :: 베르의 프로그래밍 노트 1. 애니메이션 레이어에 사용할 Animator Controller를 생성하고 그 이름을 Animation Layer라고 짓도록 하자. 2. 생성한 애니메이터 컨트롤러를 열면 … 유니티 애니메이션 레이어(Animation Layer) 사용하기 지난 애니메이션 섹션에서는 비슷하지만 방향성이 다른 동작, 혹은 비슷하지만 속도가 다른 동작을 섞는데 사용하는 애니메이션 블랜드(Animation Blend)에..내가 하는 프로그래밍 공부
    그리고 그 외의 여러가지들
  • Table of Contents:
[Unity3D] Animation – 유니티 애니메이션 레이어 사용하기

티스토리툴바

[Unity3D] Animation - 유니티 애니메이션 레이어 사용하기 :: 베르의 프로그래밍 노트
[Unity3D] Animation – 유니티 애니메이션 레이어 사용하기 :: 베르의 프로그래밍 노트

Read More

Unity Chapter 9-3. 애니메이션 : 애니메이터 레이어, 마스크, IK – 평생 공부 블로그 : Today I Learned‍ 🌙

  • Article author: ansohxxn.github.io
  • Reviews from users: 26625 ⭐ Ratings
  • Top rated: 4.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Unity Chapter 9-3. 애니메이션 : 애니메이터 레이어, 마스크, IK – 평생 공부 블로그 : Today I Learned‍ 🌙 유니티 애니메이션Permalink. Asstes Store에서 “Unity-Chan!”을 Import 해주었다. 애니메이터 레이어 … …
  • Most searched keywords: Whether you are looking for Unity Chapter 9-3. 애니메이션 : 애니메이터 레이어, 마스크, IK – 평생 공부 블로그 : Today I Learned‍ 🌙 유니티 애니메이션Permalink. Asstes Store에서 “Unity-Chan!”을 Import 해주었다. 애니메이터 레이어 … 인프런에 있는 이제민님의 레트로의 유니티 C# 게임 프로그래밍 에센스 강의를 듣고 정리한 필기입니다. 😀 🌜 [레트로의 유니티 C# 게임 프로그래밍 에센스] 강의 들으러 가기!
  • Table of Contents:

Skip links

🔔 애니메이터 레이어

🔔 IK (Inverese Kinematic)

Unity Chapter 9-3. 애니메이션 : 애니메이터 레이어, 마스크, IK -  평생 공부 블로그 : Today I Learned‍ 🌙
Unity Chapter 9-3. 애니메이션 : 애니메이터 레이어, 마스크, IK – 평생 공부 블로그 : Today I Learned‍ 🌙

Read More

유니티) Animator Controller Layers :: 뻔뻔한블로그

  • Article author: funfunhanblog.tistory.com
  • Reviews from users: 33751 ⭐ Ratings
  • Top rated: 3.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 유니티) Animator Controller Layers :: 뻔뻔한블로그 추가 되는 레이어들은 이전 레이어에 반응하는 방식과 관련된 추가 옵션이 있다. Weight : 레이어가 가지는 가중치 값이 ‘0’이면 애니메이션의 전혀 영향 … …
  • Most searched keywords: Whether you are looking for 유니티) Animator Controller Layers :: 뻔뻔한블로그 추가 되는 레이어들은 이전 레이어에 반응하는 방식과 관련된 추가 옵션이 있다. Weight : 레이어가 가지는 가중치 값이 ‘0’이면 애니메이션의 전혀 영향 … Animator Controller Layers 애니메이터 컨트롤러의 상태 머신들은 레이어로 나눌 수 있다. 예를들어 다른 신체 부위의 움직임을 나타낼때 사용 된다. IK Pass :  Inverse Kinematics 를 체크 하게 되면 그 레이[email protected]
  • Table of Contents:

유니티) Animator Controller Layers

티스토리툴바

유니티) Animator Controller Layers :: 뻔뻔한블로그
유니티) Animator Controller Layers :: 뻔뻔한블로그

Read More

애니메이션 레이어 편집하기 | 언리얼 엔진 문서

  • Article author: docs.unrealengine.com
  • Reviews from users: 47678 ⭐ Ratings
  • Top rated: 3.2 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 애니메이션 레이어 편집하기 | 언리얼 엔진 문서 그러면 Additive Layer Tracks (애디티브 레이어 섹션)에 upperarm_l 현재 위치에 대한 Transform, Rotation, Scale (이동, 회전, 스케일) 키가 추가됩니다. …
  • Most searched keywords: Whether you are looking for 애니메이션 레이어 편집하기 | 언리얼 엔진 문서 그러면 Additive Layer Tracks (애디티브 레이어 섹션)에 upperarm_l 현재 위치에 대한 Transform, Rotation, Scale (이동, 회전, 스케일) 키가 추가됩니다. Idle 애니메이션을 편집하여 애니메이션 레이어 편집을 통해 새로운 Reload 애니메이션을 만듭니다.
  • Table of Contents:

Idle 애니메이션을 편집하여 애니메이션 레이어 편집을 통해 새로운 Reload 애니메이션을 만듭니다

단계

최종 결과

애니메이션 레이어 편집하기 | 언리얼 엔진 문서
애니메이션 레이어 편집하기 | 언리얼 엔진 문서

Read More

유니티 2d 애니메이션 레이어_gdkluber

  • Article author: 92569.gdkluber.com
  • Reviews from users: 32232 ⭐ Ratings
  • Top rated: 3.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 유니티 2d 애니메이션 레이어_gdkluber 유니티 2d 애니메이션 레이어 gdkluber 각종 관련 정보를 전문적으로 제공하는 소개 플랫폼, gdkluber는 유니티 2d 애니메이션 레이어 가격 컨설팅, … …
  • Most searched keywords: Whether you are looking for 유니티 2d 애니메이션 레이어_gdkluber 유니티 2d 애니메이션 레이어 gdkluber 각종 관련 정보를 전문적으로 제공하는 소개 플랫폼, gdkluber는 유니티 2d 애니메이션 레이어 가격 컨설팅, … 유니티 2d 애니메이션 레이어유니티 2d 애니메이션 레이어 gdkluber 각종 관련 정보를 전문적으로 제공하는 소개 플랫폼, gdkluber는 유니티 2d 애니메이션 레이어 가격 컨설팅, 메이커직송, 메이커벤더, 실속가격, 유니티 2d 애니메이션 레이어 다양한 제품과 신뢰를 제공하는 전문 서비스팀입니다!
  • Table of Contents:
유니티 2d 애니메이션 레이어_gdkluber
유니티 2d 애니메이션 레이어_gdkluber

Read More


See more articles in the same category here: toplist.Experience-Porthcawl.com/blog.

[압량(Amnyang)] #3. 2D 주인공 캐릭터 Idle, Walk, EyeBlink 애니메이션 클립 만들기

728×90

이전 글에서 눈 부위는 따로 머리 뼈대(Head Bone) 자식 오브젝트로 달아줬었는데 , 원래라면 눈도 Photoshop 작업에서 따로 레이어(Layer)를 나눠서 한 PSB 파일에 같이 있는 게 좋긴 하다.

/* 뼈대 자식으로 넣어주지 않으면, 뼈대가 움직일 때 해당 오브젝트는 같이 움직이지 않는다. */

그런데, 기존에는 눈 깜빡임을 구현할 생각이 없었는데 좀 더 사실적인 연출을 위해 넣어야 하다보니 디자이너님께서 다시 재작업을 해야하는 상황이 일어났다.

그러는 과정에서 눈이 없는 캐릭터 파일과 눈만 따로 있는 파일 2개를 받게 된 것이다.

/* 이전 글에서 눈이 처음에 없었던 이유였다. */

결론적으로 내가 해야할 일은 다음과 같다.

목차

눈 깜빡임 애니메이션 및 랜덤 깜빡임 스크립트 제작

눈 깜빡임 애니메이션 제작

눈을 깜빡이는 애니메이션 클립 이름을 Girl_EyeBlink 이라고 지어주고, 페이지 애니메이션으로 구현했다.

일정 프레임마다 눈의 스프라이트(Sprite)를 교체해주는 방식으로 구현

눈 깜빡임 애니메이션 (+2022.01.26 수정 : 이제보니 스프라이트를 하나 잘못 끼워줬었네요)

눈을 깜빡이는 속도는 저 정도면 충분할 것 같다.

“Girl Controller”라는 애니메이터(Animator)를 만들어주고, 주인공 캐릭터(Girl)에 부착해줬다.

그리고 애니메이터를 열어서, 애니메이션 레이어(Animation Layer)를 새로 하나 만들어줬다.

눈 깜빡임만 담당할 “Eye” 애니메이션 레이어

이렇게 눈 깜빡이는 걸 따로 애니메이션 레이어를 통해 재생하게 되면 나중에 어떤 동작을 해도 제어하기가 편하다.

위와 같이 애니메이션 레이어를 나누지 않았다면, 나는 걷기나 달리기 애니메이션을 제작할 때도 눈 깜빡이는 경우의 수를 고려해서 제작해야 한다.

하지만 위와 같이 기능별로 레이어를 나눴다면, 걷기나 달리기 애니메이션을 제작할 때 눈을 신경쓰지 않아도 된다.

즉, 달리기 애니메이션을 재생하는데 눈도 자동으로 깜빡여주는 편리한 효과가 발생하는 것이다.

그리고 “Eye” 애니메이션 레이어에 들어가서 다음과 같이 배치를 했다.

“Eye” 애니메이션 레이어 스테이트 머신 모습

이 때, 눈 깜빡임을 계속 반복 재생하면 안 되므로 Girl_EyeBlink 애니메이션의 Loop Time 옵션을 꺼줬다.

Loop Time 비활성화

그리고, 트리거 매개변수(Trigger Parameters)를 “EyeBlink”라는 이름으로 하나 만들어줬다.

트리거 매개변수

이 매개변수는 “Girl_EyeBlink”에서 “Exit”로의 상태 전이(Transition)의 조건으로 사용할 것이다.

이제 스크립트(Script) 내용으로 넘어가보자.

EyeBlink 스크립트 제작

랜덤 함수 Random.Range()를 이용하여, 랜덤 주기마다 눈을 깜빡이게 코드를 작성했다.

골드메탈님 유튜브를 보면서 영감을 얻은 재귀함수(Recursion Function) 방법을 통해 구현해봤다.

using System.Collections; using System.Collections.Generic; using UnityEngine; public class EyeBlink : MonoBehaviour { [SerializeField] private Animator animator; void Start() { Blink(); } void Blink() { int time = Random.Range(2, 5); _Invoke(time); } void _Invoke(int time) { animator.SetTrigger(“EyeBlink”); Invoke(“Blink”, time); } }

대략 2~5초 사이의 주기로 눈을 깜빡이면 좋을 것 같아서 위와 같이 작성하고, 눈(Eye) 오브젝트에 부착해줬다.

캐릭터는 처음 게임을 시작하면 눈을 깜빡이고, 해당 애니메이션이 끝났더라도 Exit 상태로의 전이가 일어나려면 2~5초 사이의 랜덤 주기를 기다려야 하고, Loop Time을 꺼놨기 때문에 눈을 한 번만 깜빡이고 재생을 다했다면 멈출 것이다.

Exit 상태로의 상태 전이가 일어났다면, 다시 Entry로 들어와서 Girl_EyeBlink로의 상태 전이가 바로 일어나니, 대략 이런 로직으로 눈 깜빡임을 구현했다.

순서가 잘못되긴 했는데, 캐릭터 Idle 상태까지 다 구현하고 찍은 눈 깜빡임 랜덤 주기 영상

마지막으로 애니메이션 레이어의 가중치 조절을 해줬다.

가중치가 1에 가깝다면, 해당 애니메이션만 보일 것이고, 0에 가깝다면 안 보일 것이다.

즉, 다른 애니메이션 레이어들과의 혼합 비율을 설정하는 작업이다.

0.7 정도로 하니, Base Layer와 잘 혼합돼서 재생되었다.

이렇게 눈 깜빡이는 애니메이션 제작이 완성되었다.

다음은 Idle, Walk 애니메이션을 제작해볼 차례다.

캐릭터 Idle, Walk 애니메이션 제작

Idle 애니메이션 제작

사실 Idle 애니메이션 제작은 별 거 없었다. 그냥 프레임 주기를 조금 길게 해서 마치 캐릭터가 들숨 날숨을 쉬는 것처럼 뼈대를 조정해주면 됐다.

척추, 흉추, 목을 살짝 위로 회전했다가 원상복구 시키고, 팔이랑 다리가 가만히 있으면 이질감이 들어서 얘네들도 살짝씩만 움직여줬다.

오른손에 있는 라이트(Light)는 신경쓰지 않아도 된다. 작업 다 한 후에 글을 쓰다보니 순서가 잘못돼서 그렇다.

자. 다시 한 번 주의깊게 봐야 하는 부분이 있는데, 나는 여기서 눈 을 건들지 않았다.

이 Idle 애니메이션을 Base Layer에 넣고, Default로 지정했다.

Loop Time은 활성화되어 있는 게 기본 값이므로, 이대로 게임을 시작해보면 신기한 광경이 벌어진다.

Idle 상태인데, 눈도 깜빡이고 있다.

이걸 위해, 위에서 애니메이션 레이어를 분리했던 것이다.

작업하는 게 훨씬 수월해진다.

이제 걷기(Walk) 애니메이션을 만들 차례다.

아무래도 모션이 많이 들어가는 동작이다 보니 굉장히 어려웠다. 자연스러운 동작을 구현한다고 몇 시간을 쏟아 부었다.

디자이너님께 참고가 될 만한 사진을 받아서 그걸 토대로 만들었다.

출처를 안 남겨주셔서,,,문제가 될 시 삭제하겠습니다.

우선 위 사진을 토대로 다리 움직임을 최대한 자연스럽게 구현해봤다.

사람은 다리가 움직이면 그에 따라 자동으로 팔, 몸통, 목, 머리 또한 움직인다.

그래서 다리 움직임을 다 만든 후에, 추가적으로 위와 같은 부분들도 만들어줬다.

Walk 애니메이션 완성

진짜 거짓말 안 치고 처음하는 작업이다 보니(심지어 나는 디자인계열도 아니다), 3시간은 걸린 것 같다.

그래도 정말 잘 나와서 뿌듯하고 기뻤다.

나중에 배경 맵 리소스를 받게 되면, 발이 땅바닥에 닿게 하는 Target Matching이라는 것도 공부해서 적용해 줘야겠지만, 그건 나중에 하기로 하고 지금은 이 기쁨을 즐기자.

Walk 애니메이션까지 잘 뽑았으니, 이제 키 입력을 받아 캐릭터를 좌우로 움직이는 걸 해봐야 한다.

하지만, 그것까지 적다간 약속 시간에 늦을 것 같아 갔다와서 포스팅하도록 한다.

반응형

[Unity3D] Animation – 유니티 애니메이션 레이어 사용하기

유니티 애니메이션 레이어(Animation Layer) 사용하기

지난 애니메이션 섹션에서는 비슷하지만 방향성이 다른 동작, 혹은 비슷하지만 속도가 다른 동작을 섞는데 사용하는 애니메이션 블랜드(Animation Blend)에 대해서 이야기해 보았다. 이번 섹션에서는 애니메이션 위에 일정 부분에 애니메이션을 덮어씌우는 애니메이션 레이어(Animation Layer)에 대해서 배울 것이다.

지난 애니메이션 블랜드 섹션 :: http://wergia.tistory.com/54

애니메이션 레이어는 여러 종류의 게임에서 이용될 수 있지만, 대표적으로는 FPS나 TPS 형식의 게임에서 주로 이용될 수 있다. 이러한 형식의 게임의 경우 캐릭터는 한 순간에 한 가지 행동만을 하는 것이 아니라, 하나 이상, 일반적으로는 두 개 정도의 행동을 하는 일이 많다. 간단하게 예를 들자면 총 같은 화기를 사용하는 FPS 게임이라면 캐릭터는 달리거나 걷는 동시에 총을 쏠 수도 있고, 단검을 휘두를 수도 있으며, 탄창을 교체하기도 한다. 앞서 이야기한 행동들을 하기 위해서 걸음을 멈추는 경우는 거의 없다. 평소에는 상체와 하체 모두 달리는 애니메이션을 취하지만, 달리는 도중에 다른 행동을 취한다면 하체는 여전히 달리는 모션을 출력하지만, 상체는 총을 쏘거나, 단검을 휘두르거나, 탄창을 교체하는 애니메이션을 출력하게 되는 것이다.

물론 이러한 애니메이션들을 일일이 만들어 내는 방법도 있지만 이것은 너무 비효율적인 일이다. 만약에 애니메이션 레이어를 사용하지 않고 모든 애니메이션을 만든다면, 가만히 서서 위의 세 가지 행동을 하는 애니메이션, 걸으면서 다른 행동을 하는 애니메이션, 달리면서 행동을 하는 애니메이션 등을 모두 만들어내야 할 뿐만 아니라, 만약 점프하면서 폭탄을 던지는 모션을 만들고자 한다면 점프하는 모션 중 어느 타이밍에 폭탄을 던지는 모션을 추가해야할지 골머리를 앓게 될 것이다.

하지만 애니메이션 레이어를 사용하게 된다면, 걷는 애니메이션, 달리는 애니메이션, 서있는 애니메이션, 점프 애니메이션, 그리고 각각의 행동을 취하는 애니메이션 정도만 만든다면 위에서 설명한 표현들을 손쉽게 할 수 있게 된다.

이번 예시를 들기 위해서 지난 애니메이션 블랜드 섹션에서 사용했던 달리기 모션과 함께 이번에 간단하게 만든 팔을 휘두르는 애니메이션을 사용할 것이다. 공격이라고 보기엔 귀엽지만 공격 모션이다. 애니메이션 레이어와 달리는 모션, 그리고 가만히 서서 공격하는 모션만 있다면 달리면서 공격하는 모션을 만들 수 있다.

애니메이션 레이어 사용법을 배우기 위해 다음의 튜토리얼을 따라해보도록 하자.

1. 애니메이션 레이어에 사용할 Animator Controller를 생성하고 그 이름을 Animation Layer라고 짓도록 하자.

2. 생성한 애니메이터 컨트롤러를 열면 다음과 같이 빈 애니메이터 컨트롤러 창이 보일 것인데 그 중에 Layers라는 항목이 있을 것이다. 그 항목을 선택하면 Base Layer가 있는데 이 레이어는 애니메이션에서 기본적으로 제공하는 레이어이다. 이 레이어의 이름을 바꿀 수도 있고 나중에 다른 레이어를 추가한다면 기본 레이어를 삭제할 수도 있다.

3. 기본적인 달리기 애니메이션을 애니메이터 컨트롤러에 추가한다. 그리고 이 애니메이터 컨트롤러를 씬에 추가한 캐릭터의 애니메이터 컴포넌트에 넣고 플레이 버튼을 누르면 이 박스맨은 계속해서 달리기만 할 것이다.

4. 이 다음 작업은 아바타 마스크(Avatar Mask)를 생성하는 것이다. 이 아바타 마스크는 애니메이션 레이어를 사용할 때, 위에 덮어쓴 애니메이션이 적용될 본을 지정하는 것으로, 해당 레이어에서 원하는 본만 애니메이션이 작동하고 그 외의 본은 그 아래 레이어의 애니메이션을 작동하도록 만드는 것이다.

5. 생성한 아바타 마스크를 열어보면 Humanoid 방식과 Transform 방식이 있는 것을 알 수 있다. 휴머노이드 방식의 경우는 사진을 보면 알다시피 일반적인 사람형태의 본에 대해서 손쉽게 마스크를 지정할 수 있게 하는 것이고, 트랜스폼 방식은 직접 만든 특별한 형태의 본을 가져와서 원하는 애니메이션이 적용될 본을 직접 선택하는 방식이다.

6. 이번엔 None이라고 비어있는 Avatar 란에 직접 만든 박스맨의 본을 가져와야 한다. 이 본은 BoxMan@Attack을 열어보면 목각인형 상체 모양의 BoxMan@AttackAvatar를 볼 수 있는데 이것을 끌어와서 넣어주면 된다. 그리고 Import skeleton 버튼을 클릭하면 박스맨에 적용된 본들이 아바타 마스크의 인스펙터 창에 표시된다.

7. 이번 섹션의 작업에서 우리가 동작하기 바라는 것은 왼팔 하나뿐이다. 박스맨의 본들 중에 왼팔에 해당하는 본은 Bone005(mirrored)이다. 이 본만이 움직이길 원하기 때문에 Bone005(mirrored)를 제외한 모든 본의 체크를 꺼준다.

8. 이제 아까 만든 AnimationLayer 애니메이터 컨트롤러로 돌아와서 Layers 항목의 아래 쪽에 +버튼을 클릭하여 새 레이어를 만들고 그 이름을 UpperBody로 변경한다.

9. 잠시 Parameters 항목으로 넘어가서 애니메이터 컨트롤러의 매개변수에 “Attack”라는 이름의 트리거를 생성한다.

10. UpperBody 레이어에 NoneAttack 상태를 만들고 애니메이션은 비워둔다. 아무것도 하지 않는 동작이기 때문에 비워두는 것이다. 만약 아무것도 하지 않는 동작이기 때문에 아래쪽의 베이스 레이어와 맞춰서 달리는 동작으로 해줘야 한다고 생각할 수 있는데 그런 식으로 달리는 애니메이션을 넣었다가는 하체의 달리는 모션과 상체의 팔 휘두르는 모션의 싱크가 일치하지 않게되는 현상을 겪을 수도 있다.

11. Attack 상태를 추가하고 Attack 애니메이션을 넣어준 다음에 NoneAttack 상태에서 Attack 상태로 넘어가는 조건에 아까 만든 Attack 트리거를 넣어준다. 이렇게 함으로서 이제 애니메이션 컨트롤러에 Attack 트리거 신호가 들어오면 캐릭터는 어택 모션을 취하게 될 것이다(설정에 실수를 했는데 Inspector 창에서 Has Exit Time의 체크는 해제해야 한다).

12. 다음 작업은 레이어 설정을 해주는 것이다. 레이어 이름 옆에 톱니바퀴 버튼을 클릭하면 레이어 옵션을 볼 수 있는데 여기서 두 가지를 설정해주면 된다. 첫 번째는 Weight 값인데 이 값은 현재 레이어와 아래 레이어의 애니메이션 비중을 의미한다. 1에 가까울 수록 캐릭터는 현재 레이어에 가까운 모션을 취한다. 즉, 1값이면 캐릭터는 현재 레이어의 애니메이션만 취한다. 그리고 Mask 옵션인데 이것은 애니메이션을 출력하고자 하는 부위만 출력하도록 해주는 것이다. 아까 전에 만든 왼팔만 적용되는 마스크를 넣어준다.

애니메이션 레이어에 필요한 모든 설정을 끝냈다. 이제 플레이 버튼을 클릭하고 캐릭터의 달리는 모션이 출력되는 도중에 Attack 트리거를 켜보면 다음 이미지와 같이 박스맨 캐릭터가 달리기 모션을 취하면서도 왼팔만은 정상적으로 휘두르는 것을 볼 수 있다.

이것처럼 애니메이션 레이어를 사용하면 애니메이션 작업양을 획기적으로 줄이면서도 다양한 동작을 취하도록 할 수 있다. 하지만 이 예시는 매우 간단하게 제작된 본과 모델링을 사용하는 것으로, 일반적으로 게임 제작에 사용되는 복잡한 형태의 본과 모델을 사용하는 경우에는 본의 구조나 리깅된 면의 정상적인 움직임을 위한 면밀한 연구가 필요할 것이다.

마지막으로 다음의 링크에서 위의 예시로 제작된 간단한 애니메이션 레이어 예제를 받을 수 있다.

AnimaitonLayerExample.zip 다운로드

[유니티 어필리에이트 프로그램]

아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.

[투네이션] [Patreon] [디스코드 채널]

반응형

Unity Chapter 9-3. 애니메이션 : 애니메이터 레이어, 마스크, IK

인프런에 있는 이제민님의 레트로의 유니티 C# 게임 프로그래밍 에센스 강의를 듣고 정리한 필기입니다. 😀

🌜 [레트로의 유니티 C# 게임 프로그래밍 에센스] 강의 들으러 가기!

Chapter 9. 유니티 애니메이션

Asstes Store에서 “Unity-Chan!”을 Import 해주었다.

🔔 애니메이터 레이어

Layers : 여러개의 상태 머신(FSM)을 동시에 동작하게 해준다. 1개의 상태 머신 내에서는 1개의 상태만 동작할 수 있다. 그러나 Layers 로 여러개의 상태 머신을 동시에 돌릴 수 있기 때문에 여러개의 상태를 동시에 동작시킬 수 있다.

두 레이어에서 동작에 있어 겹치는 부분이 있다면 최종적으로 가장 아래에 있는 레이어가 덮어 씌운다. 위의 사진를 예로 들어 만약 Face Layer에 공격하는 신체 동작 애니메이션이 실행된다면 Base Layer의 애니메이션이 실행이 안된다. 묻혀서! weight 값이 높을수록, 즉 가중치가 높을 수록 덮어 씌우는 정도가 높아진다. 1에 가까울 수록 아예 덮어 씌워버리는 정도가 높아짐.

최종적으로 가장 아래에 있는 레이어가 따라서 레이어별로 각자 역할을 명확하게 나누어야 한다. ⭐ ex) Move Layer (움직임에 대한 애니메이션만) Face Layer (표정에 대한 애니메이션만) “손, 팔, 몸통”과 “얼굴 표정”은 서로 동작이 겹칠 일이 없다.

Face Layer의 weight을 1로 해준 후 화난 표정 애니메이션을 추가하니 두 레이어가 덮어 씌우는 것 없이 두 레이어가 동시에 잘 동작하는 것을 볼 수 있다. “손, 팔, 몸통”과 “얼굴 표정”은 서로 동작이 겹칠 일이 없으므로.

마스크

Mask 를 통해서 레이어가 어떤 영역에 대해서만 애니메이션을 적용할지 결정한다.

몸통의 상체 애니메이션 을 담당할 Upper Layer도 만들어주었고 순서는 Base – Upper – Face로 하였다. Upper Layer의 weight을 1로 해준다.

을 담당할 Upper Layer도 만들어주었고 순서는 Base – Upper – Face로 하였다.

마스크 만들기

📂Assets 빈공간 우클 – Create – Avatar Mask 이름은 Upper Mask 하체 부분은 체크 해제하고 상반신만 체크해준다. Upper Layer의 톱니바퀴 버튼을 누르고 Mask 슬롯에 이를 넣어준다.

Face Layer에는 미리 만들어져있는 Unity Chan 에셋의 face only mask 를 마스크로 넣어준다.

를 마스크로 넣어준다. Blending 값으로 Override는 아예 덮어씌우는거고 Additive는 적절히 섞이게끔. Override : 아래에 있는 Layer들을 다 덮어 씌워버려서 아래 Layer의 애니메이션은 실행되지 않음 Additive : 아래에 있는 Layer들의 애니메이션과 적절히 섞여서 함께 실행됨!

LOOSE 애니메이션 클립을 Upper Layer에 드래그 앤 드롭하여 State 추가해준다.

레이어 덮어 씌우는 구조

현재 세 Layer 모두 weight값이 1인 상태 👉 자신보다 위에 있는 Layer들을 완전히 덮어 씌운다.

게임을 실행시키고 방향키를 누르면 Upper Layer가 Base Layer를 덮어씌워 상반신만 덮어씌워져 상반신은 LOOSE 애니메이션을 취하지만 하반신은 방향키대로 걷고 있는 애니메이션을 취한다. Face Layer는 두 Layer를 덮어 씌우므로 화난 얼굴 표정 애니메이션은 계속 유지가 된다.

🔔 IK (Inverese Kinematic)

IK : 어떤 위치를 중심으로 관절의 위치를 역계산 하는 것. 물체의 위치가 어디든 상관없이 거기에 맞춰서 시선이나 팔의 위치가 결정될 때 많이 쓴다.

Sphere인 Ball 이름의 오브젝트를 만들어 게임이 시작되면 unitychan 이 이 Ball 을 잡는 애니메이션을 취하게 해보자.

👉 Ball 오브젝트의 위치를 중심으로 애니메이션의 관절의 위치를 결정한다.

📜PlayerController.cs

using System.Collections ; using System.Collections.Generic ; using UnityEngine ; public class PlayerController : MonoBehaviour { public Animator anim ; public Transform target ; void Update () { if ( Input . GetButtonDown ( “Jump” )) { anim . SetTrigger ( “Jump” ); } float verticalInput = Input . GetAxis ( “Vertical” ); float horizontalInput = Input . GetAxis ( “Horizontal” ); anim . SetFloat ( “Speed” , verticalInput ); anim . SetFloat ( “Horizontal” , horizontalInput ); } void OnAnimatorIK () { anim . SetIKPositionWeight ( AvatarIKGoal . LeftHand , 0.5f ); anim . SetIKRotationWeight ( AvatarIKGoal . LeftHand , 0.5f ); anim . SetIKPosition ( AvatarIKGoal . LeftHand , target . position ); anim . SetIKRotation ( AvatarIKGoal . LeftHand , target . rotation ); anim . SetLookAtWeight ( 1.0f ); anim . SetLookAtPosition ( target . position ); } }

public Transform target; 어떤 오브젝트를 중심으로 관절을 꺾을지. Ball 오브젝트를 잡게 할 것이므로 Ball 오브젝트의 중심 위치가 필요하므로 선언했다. 슬롯에 Ball 오브젝트를 드래그 앤 드롭 해주어야 한다.

void OnAnimatorIK() 이벤트 함수. IK 정보가 갱신될때마다 유니티는 OnAnimatorIK 메세지를 뿌린다. 애니메이터가 붙어있는 오브젝트만 이 이벤트 함수를 동작시킬 수 있다.

anim. SetIKPositionWeight (AvatarIKGoal.LeftHand, 1.0f); IK의 우선순위를 결정해준다. 두번째 인수가 0.0에 가까울 수록 IK가 덜 적용되며 1.0에 가까울 수록 IK가 더 강하게 적용된다. 위치(Position) 면에서 IK의 대상이 되는 아바타는 “왼쪽 손”이다.

(AvatarIKGoal.LeftHand, 1.0f); anim. SetIKRotationWeight (AvatarIKGoal.LeftHand, 1.0f); IK의 우선순위를 결정해준다. 두번째 인수가 0.0에 가까울 수록 IK가 덜 적용되며 1.0에 가까울 수록 IK가 더 강하게 적용된다. 회전(Rotation) 면에서 IK의 대상이 되는 아바타는 “왼쪽 손”이다.

(AvatarIKGoal.LeftHand, 1.0f); anim. SetIKPosition (AvatarIKGoal.LeftHand, target.position); 관절을 꺾어 해당 타겟의 위치로 이동시킨다.

(AvatarIKGoal.LeftHand, target.position); anim. SetIKRotation (AvatarIKGoal.LeftHand, target.rotation); 관절을 꺾어 해당 타겟의 위치로 회전시킨다.

(AvatarIKGoal.LeftHand, target.rotation); anim. SetLookAtWeight (1.0f); 시선 에 있어 IK의 우선순위를 결정해준다. 0.0에 가까울 수록 IK가 덜 적용되며 1.0에 가까울 수록 IK가 더 강하게 적용된다.

(1.0f); anim. SetLookAtPosition (target.position); 시선 을 해당 타겟의 위치로 이동시킨다.

(target.position);

IK Pass

신체 애니메이션을 담당하는 Base Layer와 Upper Layer의 IK PASS 를 체크해주어야 IK를 받을 수 있다. (체크해주지 않으면 무시함)

를 체크해주어야 IK를 받을 수 있다.

IK가 적용된 왼손 은 Ball 오브젝트를 향해 뻗어 있는 것을 볼 수 있다. 반면에 IK가 적용되지 않은 오른손은 여전히 LOOSE 애니메이션 동작을 취하고 있다.

은 오브젝트를 향해 뻗어 있는 것을 볼 수 있다.

🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

So you have finished reading the 유니티 2d 애니메이션 레이어 topic article, if you find this article useful, please share it. Thank you very much. See more: 유니티 상하체 분리 애니메이션, 유니티 애니메이션 여러개, 유니티 애니메이션 재생 스크립트, 유니티 3D 본 애니메이션, 유니티 애니메이션 끝나는 시점, 유니티 애니메이션 포지션, 유니티 2D 애니메이션, 유니티 2d 애니메이션 동시 재생

Leave a Comment