Как перетащить спрайты в libgdx - PullRequest
0 голосов
/ 25 ноября 2018

Я делаю карточную игру и снимаю фотографии из атласа.Как сделать, чтобы взять любую карту из руки пальцем и перетащить (drag and drop).Я сделал это через isTouch для двух карт, но это не то, что нужно

@Override
public void create () {

    touchPos1 = new Vector3();
    touchPos2 = new Vector3();
    batch = new SpriteBatch();


    one = new Rectangle();
    one.x = 640;
    one.y = 20;
    one.width = 64;
    one.height = 92;

    two = new Rectangle();
    two.x = 688;
    two.y = 20;
    two.width = 64;
    two.height = 92;


    camera = new OrthographicCamera();
    camera.setToOrtho(false, 1280, 720); //** w/h ratio = 1.66 **//
    batch = new SpriteBatch();
    cardAtlas = new TextureAtlas("carddd.pack"); //** Load circles.pack and circles.png **//
    redZero = new TextureRegion(cardAtlas.findRegion("0R"));  //** Load redCircle from circleAtlas **//
    greenFive = new TextureRegion(cardAtlas.findRegion("5G"));
}

@Override
public void render () {
    Gdx.gl.glClearColor(0, 1, 0, 0);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);


    camera.update();
    batch.setProjectionMatrix(camera.combined);
    batch.begin();

    batch.draw(redZero, one.x, one.y,100,141); //** draw Red circle **//
    batch.draw(greenFive, two.x, two.y,100,141);

    batch.end();

Вот я в процессе перетаскивания

    if(Gdx.input.isTouched()){
        touchPos1.set(Gdx.input.getX(), Gdx.input.getY(), 0);
        camera.unproject(touchPos1);
        if(one.x+64 > touchPos1.x && touchPos1.x>one.x-64){
            one.x = (int) (touchPos1.x);
            one.y = (int) (touchPos1.y);
        }

        else if(Gdx.input.isTouched()){
            touchPos2.set(Gdx.input.getX(), Gdx.input.getY(), 0);
            camera.unproject(touchPos2);
            if(two.x+64 > touchPos2.x && touchPos2.x>two.x-64) {
                two.x = (int) (touchPos2.x);
                two.y = (int) (touchPos2.y);
            }}
...