The best idea would be to use the AnimationPlayer node and maybe the AnimationTree(I don’t have much experience with the AnimationTree). You’ll probably need some way of freezing the player controls, my suggestion for that is including some kind of check where you monitor for input for instance:
cutscene_control = false
if Input.is_action_pressed("move_forward") and not cutscene_control:
The idea is to do something similar to all of the controls so that the animation plays without being interrupted. From there it’s all about having the proper animations imported and ready to be used in the AnimationPlayer node(and maybe blending things together with the AnimationTree).