私はlibgdxで新しくなりました。私は次の問題があります。私は私のゲームのためにピンチズームをしたい。そのため私はGameStage
にGestureDetectorListener
クラスを持っています。私はGestureDetector
次のコード持ってGameStage
でGestureDetector in libgdx
:
OrthographicCamera camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
this.setCamera(camera);
GestureDetector gestureDetector = new GestureDetector(20, 0.5f, 2, 0.15f, new GestureDetectorListener());
Gdx.input.setInputProcessor(gestureDetector);
class GestureDetectorListener implements GestureListener {
float initialScale = 1;
@Override
public boolean touchDown(float x, float y, int pointer, int button) {
initialScale = camera.zoom;
return true;
}
@Override
public boolean tap(float x, float y, int count, int button) {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean longPress(float x, float y) {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean fling(float velocityX, float velocityY, int button) {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean pan(float x, float y, float deltaX, float deltaY) {
return true;
}
@Override
public boolean zoom(float initialDistance, float distance) {
float ratio = initialDistance/distance;
camera.zoom = initialScale * ratio;
return true;
}
@Override
public boolean pinch(Vector2 initialPointer1, Vector2 initialPointer2,
Vector2 pointer1, Vector2 pointer2) {
// TODO Auto-generated method stub
return true;
}
}
をまた、私はそれらをドラッグするために、私のステージの俳優のためのInputListener
を設定しています。問題は、InputProcessor
をGestureDetector
に設定すると、私のアクタのドラッグが機能していないことです。私はカメラとGestureDetector
でピンチズームをしたいが、それはドラッグに影響しません。どうやってやるの?
助けてください!おかげさまで
ありがとう!あなたが正しいです。 "return true"が問題でした。ドラッグ&ズームは機能しています。しかし、私はズームがステージ全体ではなく、一部のコンテナに影響を与えたいと思っています。私はカメラが使えないと思う。なぜなら、カメラはステージ全体に設定されているからだ。 – Karmar
あなたはそれについてどう思いますか?ステージ全体ではなく、一部のコンテナ用にカメラを設定することはできますか?ありがとう。 – Karmar
カメラを変更すると、モデル空間が画面全体にどのようにマッピングされるかが変わります。そのため、1つのコンテナだけをズームするには適切ではありません。 –