Расчет постоянной скорости движения между 2D векторами - PullRequest
0 голосов
/ 25 февраля 2019

В 2D-игре мне нужно перемещать персонажа между двумя точками на экране.Я сделал это в другом проекте с трехмерными векторами в C #, но не уверен, как сделать то же самое с 2D и в Java.

Пробовал это в Java, но он не проходит как действительный синтаксис:

Vector2 step = pos.add(moveTarget.sub(pos)).clamp(0,1) * speed * delta;

3D-расчет в C #:

Vector3 newPos = transform.position + (targetPos - transform.position).normalized * playerSpeed * Time.deltaTime;

1 Ответ

0 голосов
/ 04 марта 2019

Вместо того, чтобы складывать позиции вместе, в LibGDX и Vector2, и Vector3 есть функция lerp (), вот документация.

https://libgdx.badlogicgames.com/ci/nightlies/docs/api/com/badlogic/gdx/math/Vector2.html#lerp-com.badlogic.gdx.math.Vector2-float-

Вы должны быть в состоянии сделать что-то вродеэто для достижения желаемых результатов:

Vector2 start = new Vector2(0, 0);
Vector2 end = new Vector2(100, 100);

public void render(float delta) {
    start.lerp(end, delta);
}

Кроме того, в LibGDX есть класс интерполяции, из которого вы можете статически использовать методы для выполнения более сложных интерполяций после только базовой функции lerp ().

https://github.com/libgdx/libgdx/wiki/Interpolation

...