// 뛰거나 가만히 있는 모션을 블렌딩
Animator anim = GetComponent<Animator>();
if (_moveToDest)
{
wait_run_ratio = Mathf.Lerp(wait_run_ratio, 1, 10.0f * Time.deltaTime);
anim.SetFloat("wait_run_ratio", wait_run_ratio);
anim.Play("Wait_Run");
}
else
{
wait_run_ratio = Mathf.Lerp(wait_run_ratio, 0, 10.0f * Time.deltaTime);
anim.SetFloat("wait_run_ratio", wait_run_ratio);
anim.Play("Wait_Run");
}
이런 방법으로 프로그래머가 코드로 하나하나 if-else문을 통해 블렌딩을 하는 것은 소규모 게임에서는 가능하지만 대규모 게임의 경우 무리가 있다.
State 패턴을 사용하면 이러한 문제를 해결할 수 있다.
public enum PlayerState
{
Die,
Moving,
Idle,
}
PlayerState _state = PlayerState.Idle;
void UpdateIdle()
{
// Idle 로직
}
void UpdateMoving()
{
// 움직이는 로직
}
void UpdateDie()
{
// 죽음
}
void Update()
{
switch(_state)
{
case PlayerState.Idle:
UpdateIdle();
break;
case PlayerState.Moving:
UpdateMoving();
break;
case PlayerState.Die:
UpdateDie();
break;
}
}