J'utilise LibGdx et j'essaie d'utiliser leur classe Rectangle comme limite pour appuyer sur les boutons de l'écran tactile. Cela fonctionne parfaitement à l'échelle 1:1, mais lorsque je mets le jeu sur mon téléphone (avec un écran plus petit), les images sont mises à l'échelle et dessinées correctement, mais pas les Rectangles. J'ai donc essayé de garder mes Rectangles à leur échelle normale, et de "mettre à l'échelle" les coordonnées XY de l'écran tactile, mais je suppose que je ne fais pas ça correctement, car ça ne fonctionne pas.
optionsMenu = new Vector<Rectangle>();
optionsMenu.add(new Rectangle(100 + (120 * 0), 100, 100, 100));
optionsMenu.add(new Rectangle(100 + (120 * 1), 100, 100, 100));
optionsMenu.add(new Rectangle(100 + (120 * 2), 100, 100, 100));
optionsMenu.add(new Rectangle(100 + (120 * 3), 100, 100, 100));
C'est comme ça que j'initialise mes rectangles de délimitation.
C'est comme ça que j'initalise mon appareil photo :
camera = new OrthographicCamera();
camera.setToOrtho(true, 800, 480);
C'est comme ça que je dessine mes boutons :
spriteBatch.draw(buttonImage, optionsMenu.get(2).bounds.getX(),
optionsMenu.get(2).bounds.getY(), optionsMenu.get(2).bounds.getWidth(),
optionsMenu.get(2).bounds.getHeight(), 0, 0, buttonImage.getWidth(),
buttonImage.getHeight(), false, true);
Et c'est comme ça que je fais ma logique d'écran tactile :
public boolean tap(float x, float y, int count, int button) {
Vector3 temp = new Vector3(x, y, 0);
camera.unproject(temp);
float scalePos = (int) ((float) Gdx.graphics.getWidth()/800.0f);
temp.x = temp.x * scalePos;
temp.y = temp.y * scalePos;
if(optionsMenu.get(0).bounds.contains(temp.x, temp.y)){
//do sutff
}
else if(optionsMenu.get(1).bounds.contains(temp.x, temp.y)){
//do other stuff
}
return false;
}