2017-05-16 14 views
0

내 게임에서 특정 동작에 나타나는 동전 배열이 있습니다. 동전을 만지면 동전이 (동전처럼) 부드럽게 움직여야합니다. 화면 하나씩.Tween 객체 배열 요소를 터치하여 한 모퉁이로 이동 LibGdx

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를 사용하려면 : 동전에 터치를 감지

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()); 
} 

을 : I 작성하고 다음과 같이 동전 배열을 그리기입니다 화면의 모서리에 터치. 나는 완전히 트윈 엔진의 개념에 새로운입니다. 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" } 
} 

CoinCoinAccessor

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; 
     } 
    } 
} 

등록 CoinAccessor을 만들고 TweenManager를 업데이트합니다.

같은 정적 방법 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