2017-06-08 8 views
0

私は、ゲームを開発するために、libGDXフレームワークと一緒にAndroid Studio IDEを使用しています。これは、似たようなゲームプレイをしている、華やかな鳥にパックマンのクローンです。コンセプトは、幽霊が正しい方向から来るのを避けながら、パンクの男が板を通って移動することであり、それは左方向にまっすぐに離れる(プレーヤーの位置を追うのではない)。私はゴーストアニメーションのために 'for loop'をどのように作成するのかよく分かりませんが、最初から画面が完全に消えてしまったことを除いて、数秒後にゴーストが一貫して再配置されて再び表示されるようにします。ゲームプレイ中に動くアニメーションを再配置するにはどうすればよいですか?

ゴーストの1つのクラス。 GamePlayStateクラスに初期化さ

public class Blinky { 

private Vector3 position; //x y and z axis 
private Rectangle bounds; 
private Texture texture1; 
private Animation blinkyAnimLeft; 

public Blinky(int x, int y) { 

    position = new Vector3(x, y, 0); 
    Texture texture1 = new Texture("blinkyLeft.png"); 
    blinkyAnimLeft = new Animation(new TextureRegion(texture1), 2, 0.5f); 
    //bounds = new Rectangle(x,y,texture1.getWidth()/2, texture1.getHeight()); 
} 

public void update(float dt) { 

    blinkyAnimLeft.update(dt); 
    //bounds.setPosition(position.x, position.y); 
} 

public Vector3 getPosition() { 
    return position; 
} 

public TextureRegion getTexture() { 
    return blinkyAnimLeft.getFrame(); 
} 

//public Rectangle getBounds() { 
    return bounds; 
} 

    public void dispose() { 
    texture1.dispose(); 
    } 
} 

幽霊とプレーヤー

public class GamePlayState extends State { 
//Variables 
private float timePassed = 0; 
private Texture background; 
public static final int WALK = 1; 
public static final double GHOST_WALK = 0.5; 
private static final int PLANKS_SPACING = 125; //gap betwen the planks 
private static final int PLANK_COUNT = 4; 
private Array<Obstacle> planks; 
private Player player; 
private Blinky blinky; 
private Inky inky; 
private Texture missile; 

public GamePlayState(GameStateManager gsm) { 
    super(gsm); 
    player = new Player(50, 100); 
    blinky = new Blinky(400, 220); 
    inky = new Inky(400, 240); 
    // missile = new Texture("missile.png"); 

    background = new Texture("black.jpg"); 
    cam.setToOrtho(false, PacMan.WIDTH/2, PacMan.HEIGHT/2); 

    planks = new Array<Obstacle>(); 

    for (int i = 1; i<= PLANK_COUNT; i++) { 
     planks.add(new Obstacle(i * (PLANKS_SPACING + Obstacle.PLANK_WIDTH))); 
    } 
} 

@Override 
public void handleInput() { 

} 

@Override 
public void update(float dt) { 
    handleInput(); 
    player.update(dt); 
    blinky.update(dt); 
    inky.update(dt); 
    cam.position.x = player.getPosition().x + 80; //update the position of the camera with the bird 

    //update when pacman cam viewport has passed plank 
    //make cam follow the player 
    for (Obstacle plank: planks) { 

     if (cam.position.x - (cam.viewportWidth/1) > plank.getPosTopPlank().x + plank.getTopPlank().getWidth()) { 

      plank.respositionPlanks(plank.getPosTopPlank().x + ((Obstacle.PLANK_WIDTH + PLANKS_SPACING * PLANK_COUNT))); 
     } 
     if (plank.collision (player.getBounds())) 
     gsm.set(new GamePlayState(gsm)); 
    } 
    cam.update(); 
    } 

@Override 
public void render(SpriteBatch sb) { 

    sb.setProjectionMatrix(cam.combined); 
    sb.begin(); 
    sb.draw(background, cam.position.x - (cam.viewportWidth/2), 0); 
    timePassed += Gdx.graphics.getDeltaTime(); 

    //Moving Inky 
    sb.draw(inky.getTexture(), inky.getPosition().x, inky.getPosition().y); 
    inky.getPosition().x -= GHOST_WALK; 

    //Moving Blinky 
    sb.draw(blinky.getTexture(), blinky.getPosition().x, blinky.getPosition().y); 
    blinky.getPosition().x -= GHOST_WALK; 
+0

コードスニペットの代わりに、画像を投稿してください? – Aryan

+0

私はコードを追加しました。どんな助けでも大歓迎です。ありがとうございます – AbZ

答えて

0

あなたがするVector3からのx、yの(およびz)の位置を取得する必要があります。 はその後、実際には

if (inky.getPosition().x < 0){ 
    Thread.sleep(/*a few sdeconds*/2000);/*Android studio would ask you about wrapping it with try - catch*/ 
    inky.setPostion(x + /*screen x size*/, 
     inky.getPosition().y,inky.getPosition().z)/*add setter in ghost class*/ 
} 

国境をチェックし、これはそれを行うための最善の方法ではありませんが、最も簡単な1

+0

私はあなたが示唆したことを試みたが、それはうまくいきませんでした。 GhostクラスのSetterメソッド 'public void setPosition(float x、float y){ x = position.x; y = position.y; } {GamePlayState code} if(inky.getPosition()。x <0){ { Thread.sleep(5); } catch(InterruptedException e){ e.printStackTrace(); } inky.setPosition(inky.getPosition()。x + PacMan.WIDTH、inky.getPosition()。y); } ' – AbZ

関連する問題