Как мне переместить тело / актера, перетаскивая мышь / палец? - PullRequest
0 голосов
/ 26 апреля 2018

В настоящее время я занимаюсь разработкой игры Air Hockey на Java с использованием libgdx.

Смысл игры заключается в том, чтобы перемещать рукоятку с помощью касания или мыши в соответствии с платформой и использовать ее для прикосновения к шайбе, чтобы она могла передвигаться.

Я немного искал, но не смог найти подходящего решения. Я знаю, что есть такие методы, как слушатели жестов, touchDragged, setTransform, applyForce и т. Д. *

Прямо сейчас, чтобы проверить это, я использую setLinearVelocity, тело набирает скорость по направлению к щелчку мыши. Таким образом, когда ручка касается шайбы, она делает именно то, что мне нужно, контактный слушатель работает, и шайба движется в правильном направлении, но, очевидно, я не хочу, чтобы этот метод применял движение к ручке.

Так, как я могу переместить это, используя прикосновение и удостоверяясь, что ручка поражает шайбу?

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете установить положение тела, используя setTransform. Чтобы переместить его мышью / пальцем, вы можете реализовать метод touchDragged из InputAdapter, например:

Gdx.input.setInputProcessor(new InputAdapter() {
    public boolean touchDragged(int screenX, int screenY, int pointer) {
        body.setTransform(screenX, Gdx.graphics.getHeight() - screenY, 0);
        return true;
    }
});

Также я думаю, что вы должны определить свою палку как кинематическое тело:

Как и статические тела, они не реагируют на силы, а как динамические тела, у них есть способность двигаться. Кинематические тела великолепны для вещей, где вы, программист, хотите полностью контролировать движение тела, например, движущаяся платформа в игровой платформе.

Ради любопытства я сам сделал тест. Палка - кинематическое тело, и шар - динамический. Как видите, на палку не действуют никакие силы:

box2d simulation

...