Для того чтобы персонаж сохранял позицию после отпускания клавиши, можно изменить код таким образом, чтобы персонаж оставался на последней позиции, на которую был перемещен при нажатии клавиши.
Вам нужно добавить переменные для хранения текущей позиции персонажа перед изменением его позиции при нажатии клавиши. Затем, после отпускания клавиши, вы можете установить позицию персонажа равной последней сохраненной позиции.
Вот пример кода:
```
extends KinematicBody2D
var velocity = Vector2()
var last_position = Vector2()
func _process(delta):
last_position = position
if Input.is_action_pressed("ui_right"):
velocity.x = 1
elif Input.is_action_pressed("ui_left"):
velocity.x = -1
else:
velocity.x = 0
if Input.is_action_pressed("ui_down"):
velocity.y = 1
elif Input.is_action_pressed("ui_up"):
velocity.y = -1
else:
velocity.y = 0
velocity = velocity.normalized() * 100
move_and_slide(velocity)
func _input(event):
if event.type == InputEvent.KEY:
if not event.pressed:
position = last_position
```
В этом примере кода переменная `last_position` хранит последнюю позицию персонажа перед его перемещением. После отпускания клавиши, позиция персонажа устанавливается равной `last_position`, тем самым возвращая персонажа на последнюю сохраненную позицию.