Universal-tween-engine で libgdx を使用する方法を学んでいますが、画面上のポイントにタッチする (またはデスクトップ アプリをクリックする) 方法と、タッチした場所までテクスチャを移動する方法を理解できませんでした。エンドポイントに到達するまで、タッチまたはクリックをアクティブに保ちません。
タッチ イベントが開始されると、アニメーションが開始され、グラフィックがその場所に向かって移動します。タッチとドラッグが開始されると、グラフィックは指/マウスポインターに従います。ポイントに触れると、タッチを離すまでグラフィックがそのポイントに向かって移動します。その後、タッチを離すと元の位置で停止します。
私はタッチアンドリリースを探していて、そのグラフィックをタッチしたポイントに移動させようとしていますが、おそらくトゥイーンエンジンの実装について何かを理解していません。以下にトゥイーンコードを貼り付けました。
public void render() {
camera.update();
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(texture.getTexture(), texture.getBoundingBox().x, texture.getBoundingBox().y);
batch.end();
Tween.registerAccessor(Plane.class, new TextureAccessor());
TweenManager planeManager = new TweenManager();
float newX = 0;
float newY = 0;
boolean animateOn = false;
if(Gdx.input.isTouched()) {
newX = Gdx.input.getX();
newY = Gdx.input.getY();
animateOn = true;
}
if (animateOn == true && (texture.getX() != newX || texture.getY() != newY)) {
Tween.to(texture, TextureAccessor.POSITION_XY, 10)
.target(newX, newY)
.ease(TweenEquations.easeNone)
.start(planeManager);
planeManager.update(1);
if (texture.getX() == newX && texture.getY() == newY) {
animateOn = false;
}
}
}
もともと、条件付き for 内にトゥイーン コードがあり、変数や変数isTouched()
は使用しませんでした。新しい座標とアニメーションの状態のみを設定すると、ループがトゥイーンをトリガーするようになると思いました。古いコードは次のようになります。newX
newY
animateOn
isTouched()
if(Gdx.input.isTouched()) {
newX = Gdx.input.getX();
newY = Gdx.input.getY();
Tween.to(texture, TextureAccessor.POSITION_XY, 10)
.target(newX, newY)
.ease(TweenEquations.easeNone)
.start(planeManager);
planeManager.update(1);
}
も使用してみましjustTouched()
たが、グラフィックはタッチしたポイントに向かってわずかにしか移動しません。
私はこれに数時間苦労してきました。誰かが私を正しい方向に向けることができれば、本当に感謝しています。
ありがとう。