И libGDX - сделать свайп вверх или вправо и т. д.?

область касания http://imageshack.us/a/img836/2909/swipe1.png

в зеленой области пользователь может провести вверх, вправо, вниз, влево. Как я могу теперь получить, например, swipe Up? или проведите пальцем вниз? или проведите пальцем вправо или влево? например, как получить строку - > input = getSwiped (); - > input тогда вверх, или вправо, или вниз, или влево

и пользователь может коснуться две кнопки. 1 или 2. 1 для утки и 2-для прыжка.

Я хочу проверить эти входы одновременно. Этот пользователь может коснуться, а также проведите пальцем вверх в тот же момент.

Я знаю, что есть GestureDetector. Я посмотрел на код, но понятия не имею, как я могу использовать салфетки часть.

Я немного знаю, как проверить кнопки. Проблема только здесь - > Как проверить входы одновременно и как получить салфетки вверх или вправо и т. д.

Я искал, как проверить Multitouching:

for (int i = 0; i < 10; i++) {
    if (Gdx.input.isTouched(i) == false) continue;
    float x = Gdx.input.getX(i);
    float y = Gdx.graphics.getHeight() - Gdx.input.getY(i) - 1;
    //...
}

2 ответов


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

создайте имя класса SimpleDirectionGestureDetector

public class SimpleDirectionGestureDetector extends GestureDetector {
public interface DirectionListener {
    void onLeft();

    void onRight();

    void onUp();

    void onDown();
}

public SimpleDirectionGestureDetector(DirectionListener directionListener) {
    super(new DirectionGestureListener(directionListener));
}

private static class DirectionGestureListener extends GestureAdapter{
    DirectionListener directionListener;

    public DirectionGestureListener(DirectionListener directionListener){
        this.directionListener = directionListener;
    }

    @Override
    public boolean fling(float velocityX, float velocityY, int button) {
        if(Math.abs(velocityX)>Math.abs(velocityY)){
            if(velocityX>0){
                    directionListener.onRight();
            }else{
                    directionListener.onLeft();
            }
        }else{
            if(velocityY>0){
                    directionListener.onDown();
            }else{                                  
                    directionListener.onUp();
            }
        }
        return super.fling(velocityX, velocityY, button);
    }

}

}

в функции create () приложения LibGdx поместите это, чтобы активировать обработку жестов для вашей игры:

Gdx.input.setInputProcessor(new SimpleDirectionGestureDetector(new SimpleDirectionGestureDetector.DirectionListener() {

@Override
public void onUp() {

}

@Override
public void onRight() {

}

@Override
public void onLeft() {

}

@Override
public void onDown() {

}
}));

Я сделал простой класс, чтобы определить направление свайпа

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.input.GestureDetector;
import com.badlogic.gdx.math.Vector2;

/** * Создано ROHIT на 3/11/2018. */

public class swipelistener  {

public boolean isswipright(){
    if(Gdx.input.isTouched()&&Gdx.input.getDeltaX()>0)
        return true;
    return false;
}

public boolean isswipleft(){
    if(Gdx.input.isTouched()&&Gdx.input.getDeltaX()<0)
        return true;
    return false;
}

public boolean isswipup(){
    if(Gdx.input.isTouched()&&Gdx.input.getDeltaY()>0)
        return true;
    return false;
}

public boolean isswipdown(){
    if(Gdx.input.isTouched()&&Gdx.input.getDeltaX()<0)
        return true;
    return false;
}

}

весь приведенный выше код использует libGDX Gdx.вход.getDELTAX () и Gdx.вход.getDELTAX (), чтобы получить относительное изменение в направлении.

надеюсь, это поможет u:)