언더테일 스타일의 2D RPG 게임을 만드는 유니티 초보야.


내 게임에서 플레이어는 아래와 같은 구조로 방향키 입력을 받아 움직여. 


public class PlayerMovement : MonoBehaviour
{
public static PlayerMovement Instance { get; private set; }

private PlayerInput playerInput;
    public Vector2 inputVec;
    public bool canMove = true;

void FixedUpdate()
    {
        if (!canMove)
        {
            inputVec = Vector2.zero;
            return;
        }

        rb2D.MovePosition(rb2D.position + inputVec * moveSpeed * Time.fixedDeltaTime);
}
public void OnMove(InputAction.CallbackContext context)
    {
        if (context.performed) inputVec = context.ReadValue<Vector2>();
        else if (context.canceled) inputVec = Vector2.zero;
    }
}


여기서 canMove는 플레이어가 NPC와 대화를 할 때나, 순간이동, 컷씬 애니메이션을 할 때 방향키 입력을 안 받게 하는 변수야.

외부에서 PlayerMovement.Instance.canMove = false로 제어해. 


문제는 플레이어가 방에 들어간다고 할 때, 방 맵으로 순간 이동을 위해 canMove = false를 실행하는데,

대부분 게임 하는 사람들은 방향키를 계속 누른 채로 있잖아?


그럼 방 안으로 이동이 끝나고 canMove = true가 실행될 때 즉시 움직임이 재개되어야 하는데, 플레이어가 멈춰 서 있는 일이 생겨. 


다시 움직이게 하려면 방향키를 한 번 뗐다가 다시 움직여 줘야 해. 


이거 해결하는 방법이 없을까? 어제 하루 종일 씨름했는데 도저히 방법이 없어서 여기 물어 봐. 미리 고마워!