dodge animation

1. dodge 애니메이션 재생 중 미끄러지는 error

dodge 애니메이션 중에 키보드 키 입력을 받을 수가 있게 되면 미끄러지는 error가 발생한다.

그래서 isPlayingDodgeAnimation이라는 parameter 값과 bool 값을 받아서 이 역시도 tracking하게 만들었다.

isPlayingDodgeAnimation이 true이면 Land animation과 마찬가지로 rotate와 move가 불가능하게 만들었다.

if(_playerAnimation.isPlayingDodgeAnimation)
	return;
//player move 및 rotate에 대한 코드

return 값으로 그 후의 code를 실행하지 못하게 하여 move 및 rotate 코드의 동작을 막은 것이다.

2. dodge 애니메이션 제자리 재생

1번을 고치게 되면 dodge 애니메이션이 제자리에서 재생이 되는 문제점 발생.

dodge 시, 일정 거리를 나아가면서 애니메이션이 재생되어야 한다. 그러므로 PlayerDodge() 라는 메소드를 만들었음

public void PlayerDodge(Vector3 lastMoveDirection)
{
    //player가 dodge 키를 누르면 player가 직전 방향으로 일정크기만큼 이동.
    //idle 상태에서 바로 dodge를 눌렀을 때, 제자리에서 dodge하는 것을 막기 위함.
    if(_playerController.isDodging)
    {
        _rigidbody.velocity = _playerController.rollDirection * dodgePower;
        Quaternion playerRotation = Quaternion.LookRotation(_playerController.rollDirection);
        transform.rotation = playerRotation;
    }
}

PlayerController에 rollDirection을 만들어주고 직전의 방향이 저장되도록 한다.
걸으면서 혹은 달리면서 전환이 되는거 외에도 idle 상태일 때, dodge 키를 눌러도 player가 바라보는 방향으로 일정량 구를 수 있도록 하려면 방향을 저장해놓고 그 방향대로 굴러가도록 만들어가는 원리이다.

rollDirection의 경우에는 _playerController에서 move 키를 누르면 저장되도록 했는데, 이렇게 되면 move키를 누르지 않으면, player가 또다시 제자리에서 dodge 애니메이션을 재생한다.

player가 바라보는 초기 방향은 결국 '앞' 이므로 초기 값을 transform.forward로 초기화 해주었다.

profile
NEWB!

0개의 댓글