2017-04-16 11 views
0

私は最近、this questionと尋ねました。私が唯一の問題は、ゲーム全体がタッチイベントに基づいており、ユーザーが画面に触れてオブジェクトが作成されるということです。Libgdx:justtouchをトリガーせずに一時停止

現在、ユーザーが一時停止ボタン(テクスチャパッカー)に触れると、オブジェクトが作成され、ゲームが一時停止されます。私は一時停止に触れるとオブジェクトが作成されないようにしたい。私はこのような何か行うことができるように使用される:

private Vector3 touchPos; 
touchPos.set(Gdx.input.getX(), Gdx.input.getY(), 0); 
camera.unproject(touchPos); 

if (Gdx.input.justTouched()) { 
if (touchPos.x > pauseX && touchPos.x < pauseX + pauseX) { 
    if (touchPos.y > pauseY && touchPos.y < pauseX + pauseY) { 
    setGamePause(!getGamePause()); 
    }}} 

をしかし、別のアプローチがあり、わからない、多分私の実装は間違っている、テクスチャパッカーで作業していないように見えますか?

private float pauseY = Gdx.graphics.getHeight() - 115; 
private float pauseX = Gdx.graphics.getWidth()/6; 
button.setSize(150, 150) 

それはpauseXpauseY場合は位置し、それぞれその後、長方形/ボタンの右に位置

ボタンの幅と高さを必要とする/矩形領域を残している

+0

テクスチャパッカーは、これに関係しているのかわかりませんか? – Moira

+0

@ 1blustoneだから私は上記の方法を間違った方法で実装していますか?またはそれを行うための別の方法があります – Lynob

+1

タイトルをどういう意味なのかよく分かりません - ボタンを押すとオブジェクトの作成を含めてすべてをやり直したり再開したりするだけです。 [Ashley](https://github.com/libgdx/ashley)を見て、すべてのシステムを作成し、ゲームが真であれば 'engine.update'の呼び出しを止めてください。もちろん、あなたの一時停止ボタンを 'Engine'の外に置いて再開することができます:) – Moira

答えて

1

、画面の左上にあります例えば、buttonWidth,buttonHeightとします。

if(Gdx.input.justTouched()) { 
    if (touchPos.x > pauseX && touchPos.x < pauseX + button.getWidth()) { 
     if (touchPos.y > pauseY && touchPos.y < pauseY + button.getHeight()) { 
      setGamePause(!getGamePause()); 
     } 
    } 
} 

テストをチェックしてください:

public class GdxTest extends Game implements InputProcessor{ 

    private Stage stage; 
    Vector3 vector3; 
    TextButton button; 
    float pauseX,pauseY; 

    @Override 
    public void create() { 

     vector3=new Vector3(); 
     ExtendViewport extendViewport=new ExtendViewport(700,1200,new OrthographicCamera()); 
     stage=new Stage(extendViewport); 

     Skin skin=new Skin(Gdx.files.internal("skin/uiskin.json")); 
     skin.get("font-label", BitmapFont.class).getRegion().getTexture().setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear); 

     pauseX=300; 
     pauseY=500; 
     button=new TextButton("Pause",skin); 
     button.setPosition(pauseX,pauseY); 

     stage.addActor(button); 
     Gdx.input.setInputProcessor(this); 
    } 

    @Override 
    public void render() { 
     super.render(); 

     Gdx.gl.glClearColor(0,1,1,1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

     stage.draw(); 
     stage.act(); 

     ////Touch Detection without processor 

     vector3.set(Gdx.input.getX(),Gdx.input.getY(),0); 
     stage.getCamera().unproject(vector3); 

     if(Gdx.input.justTouched()){ 
      if(vector3.x>pauseX && vector3.x<pauseX+button.getWidth() && vector3.y>pauseY && vector3.y<pauseY+button.getHeight()) 
       System.out.println("TOuched"); 
     } 

     /////// 
    } 

    @Override 
    public void resize(int width, int height) { 
     super.resize(width,height); 
     stage.getViewport().update(width,height); 
    } 

    @Override 
    public void dispose() { 
     stage.dispose(); 
    } 

    @Override 
    public boolean keyDown(int keycode) { 
     return false; 
    } 

    @Override 
    public boolean keyUp(int keycode) { 
     return false; 
    } 

    @Override 
    public boolean keyTyped(char character) { 
     return false; 
    } 

    @Override 
    public boolean touchDown(int screenX, int screenY, int pointer, int button1) { 

     vector3.set(screenX,screenY,0); 
     stage.getCamera().unproject(vector3); 

     if(vector3.x>pauseX && vector3.x<pauseX+button.getWidth() && vector3.y>pauseY && vector3.y<pauseY+button.getHeight()) 
      System.out.println("TOuched"); 


     return false; 
    } 

    @Override 
    public boolean touchUp(int screenX, int screenY, int pointer, int button) { 
     return false; 
    } 

    @Override 
    public boolean touchDragged(int screenX, int screenY, int pointer) { 
     return false; 
    } 

    @Override 
    public boolean mouseMoved(int screenX, int screenY) { 
     return false; 
    } 

    @Override 
    public boolean scrolled(int amount) { 
     return false; 
    } 
} 
+0

がうまくいかないと言ったように、私の更新された質問をチェックしてください不具合 – Lynob

+0

更新された回答を確認してください。 – Aryan

+0

はまだ動作しません – Lynob

関連する問題