일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 4기
- User Stack
- 알고리즘
- c#
- 유니티
- project3
- pintos
- KRAFTON JUNGLE
- 크래프톤정글4기
- 전쟁-전투
- 네트워크
- C
- 파이썬
- 이벤트 함수 실행 순서
- 크래프톤 정글 4기
- 핀토스
- Unity
- 다익스트라
- BFS
- 연결리스트
- 티스토리챌린지
- kraftonjungle
- 추상클래스와인터페이스
- anonymous page
- 오블완
- TiL
- 알고리즘수업-너비우선탐색2
- 크래프톤정글
- 크래프톤 정글
- 백준
Archives
- Today
- Total
말감로그
[Unity] Valley - 플레이어 이동 & 애니메이션(Blend Tree) 본문
728x90
플레이어 애니메이션은 Blend Tree를 사용해봤다.
Blend Tree 애니메이션은 여러 애니메이션 클립을 하나의 트리에 넣고, 캐릭터의 속도, 방향, 각도 등을 기준으로 자동으로 애니메이션을 혼합하고 전환할 수 있다.
전체적인 애니메이션은 이런식으로 관리해놨다. 각 애니메이션 트리를 생성해주고
해당 애니메이션 블랜드 트리 안에 Front, Back, Left, Right 애니메이션을 연결해 준뒤,
파라미터를 생성해 각 애니메이션에 맞게 값을 주면 해당 값이 변할 때마다 각 애니메이션으로 실행되게 된다.
Horizontal이 아닌 LastHorizontal로 준 이유는 애니메이션이 이동하다 멈추면 정면을 바라보게 되어있어서, 마지막 누른 키를 저장 후 그 방향을 바라보게 하였다.
public class Player : MonoBehaviour
{
public float moveSpeed = 5;
Rigidbody2D rb;
Vector2 movement;
Vector2 lastMoveDirection;
Animator anim;
bool isMove;
void Start()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
void Update()
{
GetInput();
UpdateAnimation();
}
void FixedUpdate()
{
Move();
}
void Move()
{
rb.MovePosition(rb.position + movement * moveSpeed * Time.fixedDeltaTime);
}
void GetInput()
{
movement.x = Input.GetAxisRaw("Horizontal");
movement.y = Input.GetAxisRaw("Vertical");
// 대각선 이동 시 속도 일정하게 유지
if (movement.magnitude > 1)
{
movement = movement.normalized;
}
// 마지막 이동 방향 저장
if (movement != Vector2.zero)
{
lastMoveDirection = movement;
}
}
void UpdateAnimation()
{
// walk
anim.SetFloat("Horizontal", movement.x);
anim.SetFloat("Vertical", movement.y);
anim.SetFloat("Speed", movement.sqrMagnitude);
// idle
if (movement.sqrMagnitude == 0)
{
anim.SetFloat("LastHorizontal", lastMoveDirection.x);
anim.SetFloat("LastVertical", lastMoveDirection.y);
}
}
}
728x90
'TIL' 카테고리의 다른 글
[Unity] Valley - 아이템 리팩토링 / 인벤토리 & Toolbar 간 슬롯 이동 (0) | 2024.10.18 |
---|---|
[Unity] Valley - 인벤토리 시스템 (0) | 2024.10.16 |
2024.10.04 Unity - 수류탄 효과, 몬스터 AI (NavMeshAgent) (0) | 2024.10.04 |
24.10.02 Unity - 물리 충돌 수정, Raycast (0) | 2024.10.02 |
24.09.30 Unity - 3D 쿼터뷰 액션게임(무기 장착, 아이템 먹기, 근거리, 원거리 공격) (0) | 2024.09.30 |