0

我有一个旋转的精灵,当释放触摸输入时,它会快速旋转回 0 度。如何在释放触摸输入之前获得精灵的旋转(度数或其他)?

我已经看过并且找不到任何方法来实现,谷歌的棘手问题。

编辑对不起潜在的回应。到目前为止,这是我的代码,我可以使用 rPower 变量来引导弹丸吗?还没走到那一步。

@Override
    public boolean touchDown(int x, int y, int pointer, int button) {

        if (Gdx.input.isTouched(0)) {
        cam.unproject(touchPoint.set(Gdx.input.getX(), Gdx.input.getY(), 0));
        }
        if (Gdx.input.isTouched(1)) {
            cam.unproject(touchPoint2.set(Gdx.input.getX(), Gdx.input.getY(), 0));
        }
    return true;
    }


    @Override
    public boolean touchDragged(int x, int y, int pointer) {

    if (Gdx.input.isTouched(0)) {
        cam.unproject(dragPoint.set(Gdx.input.getX(), Gdx.input.getY(), 0));
        dx = touchPoint.x - dragPoint.x;
        dy = touchPoint.y - dragPoint.y;
        throwerLowerArmSprite.setRotation(dx * 30);
    }
    if (Gdx.input.isTouched(1)){
        cam.unproject(dragPoint2.set(Gdx.input.getX(), Gdx.input.getY(), 0));
        d1x = dragPoint2.x - touchPoint2.x;
        d1y = dragPoint2.y - touchPoint2.y;
        throwerUpperArmSprite.setRotation(d1x * 30);

    }
    return true;
    }

    @Override
    public boolean touchUp(int x, int y, int pointer, int button) {
        if (!Gdx.input.isTouched(0)) {
        cam.unproject(releasePoint.set(Gdx.input.getX(), Gdx.input.getY(), 0));
        rPower = releasePoint.x - touchPoint.x;
        throwerLowerArmSprite.setRotation(0);
        }
        if (!Gdx.input.isTouched(1)) {
            cam.unproject(releasePoint2.set(Gdx.input.getX(), Gdx.input.getY(), 0));
            rPower = releasePoint2.x - touchPoint2.x;
            throwerUpperArmSprite.setRotation(0);
            }
        return true;
        }
4

1 回答 1

0

由于方法中的这一点,您的精灵会旋转回 0 度touchUp

throwerLowerArmSprite.setRotation(0);

所有有setRotation方法的对象也有一个getRoatation()方法。因此,您可以使用以下方法保存当前旋转:

float oldRotation = mySprite.getRotation();

与问题无关,但您可以简化所有输入事件回调。您正在混合事件轮询方法以查找事件回调已经提供的数据。例如,您的touchDown方法可以像这样使用它的参数:

public boolean touchDown(int x, int y, int pointer, int button) {
    if (pointer == 0) {
       cam.unproject(touchPoint.set(x, y, 0));
    } else if (pointer == 1) {
       cam.unproject(touchPoint2.set(x, y, 0));
    }
    return true;
}

touchUp这在您的方法中更加有用,其中pointer参数将告诉您什么Gdx.input.isTouched不能(即哪个指针是不再触摸屏幕的指针)。

于 2013-03-13T16:29:41.143 回答