Получить позицию курсора в LIBGDX

Как получить позицию курсора в libgdx и применить его к спрайту? Как это? enter image description here

Я хочу, чтобы мой спрайт указывал направление, где мой курсор находится на экране. Я ищу примеры libgdx, но я не могу найти примеры, связанные с этим.

Ответ 1

Получить положение курсора

Если вы используете опрос для ввода, используйте Gdx.input.getX() и Gdx.input.getY(), чтобы получить текущие координаты мыши и x. (Документ говорит, что он имеет отношение только к прикосновению, но код выглядит так, будто он сообщает о необработанных значениях мыши, независимо от состояния кнопки.)

Если вы используете InputProcessor, вы можете использовать один из:

для получения входных событий от мыши без нажатия кнопок.

Применить положение к спрайту

Обновите Vector2, который указывает текущую позицию спрайта на позицию курсора. Это может быть ваш курс Sprite. Вы захотите повернуть заголовок спрайта в соответствии с этим вектором.

Используйте Vector2.angle(), чтобы вычислить угол этого вектора, и установите для этого поворот спрайта. (Это относительно положительной оси X, поэтому вам может потребоваться добавить константу, если вы хотите ее относительно оси Y.)

Ответ 2

Обычно я отслеживаю свою мышь в мировых координатах следующим образом:

    // variables
    private final Vector2 mouseInWorld2D = new Vector2();
    private final Vector3 mouseInWorld3D = new Vector3();
    private final OrthographicCamera cam; 
    .
    .
    .
    //in render() code
    mouseInWorld3D.x = Gdx.input.getX();
    mouseInWorld3D.y = Gdx.input.getY();
    mouseInWorld3D.z = 0;
    cam.unproject(mouseInWorld3D);
    mouseInWorld2D.x = mouseInWorld3D.x;
    mouseInWorld2D.y = mouseInWorld3D.y;

Затем я могу использовать mouseInWorld2D для доступа к координатам мыши (относительно сцены/мира) в моей игре. Спрайт может легко отслеживать эту координату и вычислять ее угол и направление.