J'ai un écran (Basescreen implémente l'interface d'écran) qui rend une image PNG. En cliquant sur l'écran, il déplace le caractère sur la position touchée (à des fins de test).
@Override public void render(float delta) { if (Gdx.input.justTouched()) { x = Gdx.input.getX(); y = Gdx.input.getY(); } super.getGame().batch.draw(_sourceTexture, x, y); }
4 Réponses :
Détecter la collision J'utilise maintenant je passe ce vecteur dans caméra.unproject (Vector3) code>. J'ai défini
vector3 code> comme:
caméra.unproject (vector3) code>. Utilisez
x code> et
y code> de ce vecteur pour dessiner votre personnage. P> p>
Il y a beaucoup de telles questions là-bas et de nombreuses réponses disant que vous devez faire de la caméra.Unproject, mais lorsque je commençais avec Libgdx, je ne savais tout simplement pas quoi faire alors (c'est-à-dire utiliser les nouvelles coordonnées de vecteur). C'est la seule réponse que j'ai trouvée puis que cela spécifie cela, tant de merci beaucoup, bonne réponse!
Vous le faites bien. Libgdx fournit généralement des systèmes de coordonnées dans leur format "natif" (dans ce cas, les coordonnées de l'écran tactile natif et les coordonnées par défaut OpenGL). Cela ne crée aucune consistance, mais cela signifie que la bibliothèque ne doit pas nécessairement entrer entre vous et tout le reste. La plupart des jeux OpenGL utilisent une caméra qui correspond à une coordination "du monde" relativement arbitraire sur l'écran, de sorte que les coordonnées du monde / du jeu sont souvent très différentes des coordonnées de l'écran (une cohérence est donc impossible). Voir Modification du système de coordonnées dans Libgdx (Java)
là sont deux façons que vous pouvez travailler autour de cela. On transforme vos coordonnées tactiles. L'autre consiste à utiliser une caméra différente (une projection différente). P>
à corrige les coordonnées tactiles strong>, il suffit de soustraire le Y de la hauteur de l'écran. C'est un peu de hack. Plus généralement, vous voulez "non -roject" de l'écran dans le monde (voir le
Alternativement, à Fixez la caméra forte> Voir " Modification du système de coordonnées de libgdx (Java) ", ou Cet article sur le forum libgdx . Fondamentalement, vous définissez une caméra personnalisée, puis définissez le caméra.unproject () code> variations
). C'est probablement le plus facile. P> spritbatch code> pour l'utiliser au lieu de la valeur par défaut .: Shaperenderer Code>, les rendriers de la police, etc.) qui seront également par défaut à la caméra "incorrecte" et doivent être réparées. p> p>
J'ai eu le même problème, je l'ai simplement fait.
public boolean touchDown(int screenX, int screenY, int pointer, int button) { screenY = (int) (gheight - screenY); return true; }
Le lien ci-dessous traite de ce problème.
Projets Les coordonnées données dans l'espace mondial pour sélectionner des coordonnées. P>
Vous devez utiliser la méthode Projet (Vector3 WorldCoords) Code> en classe
com.badlogic.gdx.graphics.camera code>. P>
world.hitPoint((int) worldCoors.x, (int) worldCoors.y);
OnTouch();
return true;
}