2017-09-08 3 views
0

J'essaie de trouver un moyen de «revoir» tous les acteurs à un niveau de coordination spécifique, pour voir s'ils ont un identifiant spécifique (nom par exemple). La méthode hit dans la scène (présentée dans le code ci-dessous) fonctionne bien pour cela, mais s'arrête après avoir trouvé le premier acteur (ce qui est un problème si plusieurs acteurs se chevauchent).LibGDX - Renvoie tous les acteurs à une étape spécifique coordonnée

@Override 
    public boolean touchDown(int screenX, int screenY, int pointer, int button) { 
     Vector2 coord = stage.screenToStageCoordinates(new Vector2((float)screenX,(float)screenY)); 
     Actor hitActor = stage.hit(coord.x,coord.y,false); 

     if(hitActor != null) 
     Gdx.app.log("HIT",hitActor.getName()); 

     return true; 
    } 

Est-il possible pour la méthode de succès pour continuer à fonctionner après avoir trouvé le premier acteur et le retour des résultats dans un tableau par exemple (ou une autre méthode similaire), ou serais-je mieux en boucle juste par tous les acteurs et vérifier si les limites se chevauchent à chaque fois?

Répondre

0

Je pense que boucler à travers tous les acteurs et vérifier s'ils ont été touchés est le seul moyen parce que stage.hit() renvoie uniquement l'acteur le plus profond de ce point touché.

+0

Merci. Donc, pour confirmer, 'vérifier si elles ont été touchées' signifierait vérifier si les limites entre les deux acteurs se chevauchent? –

+0

Si vous voulez vérifier si les deux acteurs sont entrés en collision, oui. Si vous voulez une détection tactile, vous obtenez ou créez un rectangle de délimitation et vous appelez rect.contains (x, y) –