Кстати, есть еще один подход для этой проблемы. Вы можете перераспределить скорость по осям X и Y, чтобы сохранить общую скорость, но сделать их независимыми друг от друга при движении по диагонали.
Вот как это сделать:
1. Нормализуйте вектор движения, чтобы получить его направление:
```gdscript
var input_vector = Vector2(x_input, y_input)
var normalized_vector = input_vector.normalized()
```
2. Получите текущую скорость по осям X и Y:
```gdscript
var current_speed_x = velocity.x
var current_speed_y = velocity.y
```
3. Для движения по осям X и Y, умножьте их на соответствующие компоненты нормализованного вектора:
```gdscript
var movement_vector = Vector2(current_speed_x * normalized_vector.x,
current_speed_y * normalized_vector.y)
```
4. Примените измененное движение с использованием функции `move_and_collide`:
```gdscript
move_and_collide(movement_vector, Obj_collision)
```
Теперь, при движении по диагонали, скорости по осям X и Y будут независимыми и не будут складываться. Это позволит вам достичь желаемого эффекта при движении.
Надеюсь, это поможет вам решить вашу проблему!