2017-05-16 4 views
0

私のゲームでは、特定のアクションに出現するコインの配列があります。コインに触れると、コインは(コインのように)滑らかにスクリーン、1つずつ。 私はこのようなコインアレイの作成と描画しています:コインのタッチを検出するためのTweenのオブジェクト配列要素をタッチすると1つのコーナーに移動する

private Coin coins[] = new Coin[10];//coin array 

for(int i=0;i<coins.length;i++) { 
    coins[i]=objectFactory.createCoin();//creating object array of coins 
} 

ドローコイン

for(int i=0;i<coins.length;i++) { 
    coinTexture = coinAnimation.getKeyFrame(animationTime, true); 
    batch.draw(coinTexture,coins[i].getX(), coins[i].getY()); 
} 

if(Gdx.input.isTouched()) { 
     Vector3 touchPos = new Vector3(); 
     touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0); 
     game.camera.unproject(touchPos); 
     for(int i=0;i<coins.length;i++){ 
      Rectangle textureBounds=new Rectangle(coins[i].getX(),coins[i].getY(),coins[i].getWidth(),coins[i].getHeight());  
      if(textureBounds.contains(touchPos.x,touchPos.y)) { 
       System.out.println("u touched the coin!!!!!!!!"); 
      } 
     } 
} 

私は今それをトゥイーンするユニバーサルTweenEngineを使用したいが画面の隅に触れてください。私は完全にツイーンエンジンの概念に新しいです。 tween engine.Anyヘルプでこの影響をどのように達成するかについての有用なドキュメントは見つかりませんでした。

答えて

1

ので、プロジェクトでは、このレポを追加

compile 'com.github.arcnor:universal-tween-engine:6.3.4' 
compile 'com.github.arcnor:universal-tween-engine:6.3.4:sources' 

これらのアーティファクトはhttps://jitpack.ioで利用可能なコアモジュールでこれらの依存関係を注入し、プロジェクトでトゥイーンエンジンを追加します。

repositories { 
    maven { url "https://jitpack.io" } 
} 

​​と更新TweenManagerで登録CoinAccessorCoinAccessor

public class CoinAccessor implements TweenAccessor<Coin> { 

    public static final int POS_XY = 1; 
    public static final int CPOS_XY = 2; 

    @Override 
    public int getValues(Coin target, int tweenType, float[] returnValues) { 
     switch (tweenType) { 
      case POS_XY: 
       returnValues[0] = target.getX(); 
       returnValues[1] = target.getY(); 
       return 2; 

      case CPOS_XY: 
       returnValues[0] = target.getX() + target.getWidth()/2; 
       returnValues[1] = target.getY() + target.getHeight()/2; 
       return 2; 

      default: assert false; return -1; 
     } 
    } 

    @Override 
    public void setValues(Coin target, int tweenType, float[] newValues) { 
     switch (tweenType) { 
      case POS_XY: target.setPosition(newValues[0], newValues[1]); 
      break; 

      case CPOS_XY: target.setPosition(newValues[0] - target.getWidth()/2, newValues[1] - target.getHeight()/2); 
      break; 

      default: assert false; 
     } 
    } 
} 

を作成します。

同一の静的方法registerAccessorがある登録コイン

Tween.to(coin[i], CoinAccessor.POS_XY, 0.8f).target(targetX,targetY).start(tweenManager); 

EDIT

上の適切な接触があります。ゲームのアップデートで

Tween.registerAccessor(Coin.class, new CoinAccessor()); 

コールTweenManagerupdate()方法/トゥイーンマネージャを更新する方法をレンダリングします。

TweenManager tweenManager = new TweenManager(); 
tweenManager.update(dt); // this call should be in render/update method 
+0

ここで、このPOS_XYとCPOS_XYがスイッチケースでどのように機能するか説明してください。 – Niranjana

+0

あなたは 'POS_XY'でのみ動作する必要があります – Aryan

+0

アクセサーに登録してTweenManagerを更新するコードを投稿すると便利です。 – Niranjana

関連する問題