Как достичь того, чтобы при движении по диагонали скорости по осям X и Y не суммировались?

  • 18 августа 2023 г. 12:07
Ответы на вопрос 1
Кстати, есть еще один подход для этой проблемы. Вы можете перераспределить скорость по осям 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 будут независимыми и не будут складываться. Это позволит вам достичь желаемого эффекта при движении.

Надеюсь, это поможет вам решить вашу проблему!
Похожие вопросы