본문 바로가기
게임 개발

[Unity] 참새의 모험 (2) - 애니메이션 속도 조절

by chobbo 2024. 6. 18.


공속이 바뀔 때마다 참새의 공격 모션도 같이 빨라지게 구현하려고 한다.

애니메이션의 속도를 조절하는 방법은 다음과 같다. 

 

1. Animator.Speed로 조절

Animator animator;

private void Awake()
{
    animator = GetComponent<Animator>();
}

public void SetAnimSpeed()
{
    animator.speed = 1;
}

 

예시로, 걷거나 뛸 때 같은 애니메이션 클립을 사용한다면 

플레이어의 속도를 animator.speed = 현재 속도; 이렇게 조절해줄 수 있다.

 

 

2. 애니메이션 Inspector창에서 직접 변경

 

애니메이션 컨트롤러에서 State를 눌러 나타나는 Inspector창에서 Speed 값을 임의로 지정할 수 있다.

이렇게 변경하면 해당 클립은 코드에서 수정하지 않는 한 수정한 Speed값으로 계속 지정된다.

즉 동적으로 바뀌진 않는다.

 

 

3. Animator의 Parameter와 Multiplier를 이용한 애니메이션 속도 변경

오늘 새로 알게된 방법이다. 

사용해야하는 이유

만약 1번과 같이 animator 자체의 속도를 지정해버리면, 해당 애니메이터의 모든 애니메이션 속도가 빨라진다.

 

나의 경우 공속 업그레이드를 했을 때, 참새의 공격 속도만 빨라지므로

공격을 제외한 다른 애니메이션이 빨리지면 안되는데

1번 방법을 사용하여 모든 애니메이션 속도가 같이 빨라져 버리는 이슈가 발생한다

 

이럴 때에 Multiplier를 사용해주어야 한다.

속도의 변경이 필요하지 않은 애니메이션은 놔두고, 필요한 애니메이션의 속도만 조절하는 것이다.

 

사용 방법

 

2번과 같이 애니메이션 State를 누르면 Speed 밑에 Multiplier와 Parameter가 있는 것을 볼 수 있다.

 

저 동그라미 부분을 누르면 사용할 수 있는데,

반드시 float 형식의 파라미터를 만들어두어야 누를 수 있다.

공격 속도를 제어할 BaseAttackSpeed 파라미터

 

그 다음 Parameter 체크 후 사용할 Multiplier를 고른다.

 

그리고 BaseAttackSpeed 파라미터를 수정하는 코드를 쓴다!

animator.SetFloat("BaseAttackSpeed", animSpeed);

 

이런식으로 작성해준다.