Comment puis-je détecter si un sprite a été touché en Java libGDX?
Depuis quelques jours, j'ai été le portage de mon jeu (Apopalypse) à la plate-forme Mobile Android. J'ai fait une rapide recherche sur Google de sprite de détection tactile, mais n'a pas trouvé quelque chose d'utile. Chaque bulle d'aide affiche une fois touché et j'ai juste besoin de détecter si il est touché.
Voici mon ballon de frai code:
Rendu (x, y, largeur et hauteur sont aléatoires):
public void render() {
y += 2;
balloon.setX(x);
balloon.setY(y);
balloon.setSize(width, height);
batch.begin();
balloon.draw(batch);
batch.end();
}
De frai dans la classe de jeu principal:
addBalloon(new Balloon());
public static void addBalloon(Balloon b) {
balloons.add(b);
}
- Qu'avez-vous essayé? Avez-vous lu le wiki? (github.com/libgdx/libgdx/wiki -- vérification de la gestion des données des sections.)
Vous devez vous connecter pour publier un commentaire.
C'est la façon dont je l'ai fait, mais en fonction de la scène que vous utilisez et les éléments qui peuvent être touchées, il y a peut être un peu plus optimisé façons de le faire:
dans votre classe ayant rendu l'utilisation d'une méthode peut ne code suivant
j'ai fait un peu de classe que j'utilise pour mes jeux à détecter est Sprite est touché
voici comment je l'utilise
avec la même logique, vous pouvez détecter les sprite de la libération et également vous pouvez l'adapter à la taille de l'effet quand le sprite est touché et plus...
espère que cela a été utile !
Vous avez
Gdx.input.getX()
etGdx.input.getY()
. Les coordonnées X et Y de la dernière touche.Il suffit de comparer avec ballon cadre.
Vous pouvez ajouter un petit 1x1 pixel rectangle à la souris et de vérifier si elle croise ou contient d'autres boîtes. Vous avez besoin d'utiliser des boîtes pour tous vos objets que vous souhaitez rendre cliquable de cette façon.
j'ai une solution simple
il en est ainsi de créer un petit rectangle de 1 pixel par un pixel
Rectangle rect;
rect = new Rectangle(0, 0, 1, 1);
puis faire une méthode appelée
touching_checking();
dans cette méthode que nous allons faire trois choses
d'abord vérifier si l'écran est touché
deuxième mettre le rectangle où vous touchez l'écran
puis à la fin de vérifier si votre rectangle chevauchements avec le sprite rectangle.
comme ça
private void touching_checking() {
if (Gdx.input.isTouched()) {
rect.setPosition(Gdx.input.getX(), Gdx.input.getY());
if (rect.overlaps(back.getBoundingRectangle())) {
//do what you want here
}
}
}
j'ai un tableau de sprites appelé les niveaux i voir laquelle j'ai appuyé comme ça
Voici ce que j'utilise dans ma classe sprite. Je lui donne le vecteur où j'ai cliqué
camera.unproject(new Vector3().set(x,y,0));
. retourne true si cliqué dans la zone de l'image-objet.