Das wird nicht direkt von libGDX unterstützt, da der TiledMap-Code nur zum Rendern dient.
Sie könnten jedoch problemlos eine Stage
erstellen, die als eine Art Overlay-Eingabe-Ebene für Ihre TiledMap fungiert. Erstelle einfach ein Actor
für jede Kachel, die dieselbe Größe wie die Position dieser Kachel hat. Dann können Sie EventListener
s zu diesen Akteuren hinzufügen, um Dinge wie Klicks auf diese Akteure erkennen zu können.
Diese Akteure sollten einen Hinweis auf ihren "Ursprung" behalten, nämlich TiledMapTileLayer.Cell
. So können Sie jederzeit vom Aktor zur Zelle zurückkehren, wenn Sie diese Ereignisse verarbeiten.
Im Folgenden wird gezeigt, wie Sie es tun könnten:
Dieser Akteur ist dafür verantwortlich, die Ereignisse abzufangen und die Informationen über die Kachel zu behalten, auf der er basiert:
%Vor%Dieser kleine Zuhörer kann an einen dieser Schauspieler angehängt werden und macht jede Art von Logik:
%Vor%Die folgende Klasse erstellt die Akteure aus einer gegebenen Karte und verbindet sie mit den Zuhörern:
%Vor% Jetzt wird die TiledMapStage
alle Arbeit für dich erledigen. Alles, was Sie tun müssen, ist folgendes:
Und in render (...) müssen Sie stage.act()
aufrufen. Denken Sie daran, dieselbe Viewport
für die Bühne zu verwenden, die Sie zum Rendern der TiledMap verwenden. Andernfalls werden die Eingabe und die gerenderte Karte nicht ausgerichtet.