В Godot, как ограничить vector.x, если vector.y достиг максимума? - PullRequest
0 голосов
/ 18 апреля 2020

Я новичок в движке Годо. Я пытаюсь сделать космический шутер и столкнулся с небольшой проблемой. Я перемещаю свой корабль с этим кодом:

if button_up.is_pressed():`
    velocity += Vector2(acceleration, 0).rotated(rotation + deg2rad(-90))
move_and_slide(velocity)

Я сделал так, чтобы корабль двигался туда, куда он указывает, и он работает довольно хорошо. Однако, когда я двигаюсь в градусах между 1 и 89, 91 и 179 и т. Д. 1007 *., И speed.x, и speed.y продолжают расти, пока не достигнет max_speed, и это не приведет к тому, что мой корабль будет двигаться прямо 45, 135, 225 или 315 градусов, а не туда, куда он указывает. Я хочу сделать это так, когда, например, speed.x достигает max_speed, speed.y ограничивается его текущим значением. Возможно ли это?

Спасибо заранее и извините за мой английский sh

1 Ответ

0 голосов
/ 24 апреля 2020

Перед move_and_slide, выполните velocity = velocity.clamped(max_speed)

Это не будет иметь никакого эффекта, если оно меньше максимума, но установит его на максимум, если оно закончилось.

...