Bonjour,
depuis un petit moement maintenant je suis coincé avec la détection de collision avec des Tuiles.
J'uitlise donc un IsometricTiledMapRenderer.
Pour la detection des tuiles j'utilise la projection de la caméra pour déduire les coordonnées du point:
Pour déplacer mon personnage, j'utilise:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 private static Vector2 toIsometricGridPoint(float x, float y) { Vector2 point = new Vector2(x, y); point.rotate(45); return point; }
Et les coordonnées transmises sont bonnes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public static Vector2 screenToMap(Vector2 initialPosition) { Vector3 v3 = GameScreen.getCamera().unproject(new Vector3(initialPosition, 0)); return new Vector2(v3.x, v3.y); }
J'ai essayer d'utiliser un camera.project() mais ça ne fonctionne pas.
En allant un peu plus loin pour la collision avec une tuile qui a la propriété "blocked", il semble que l'angle de rotation n'est pas de 45°.
Un image en dira plus:
http://www.developpez.net/forums/att...&thumb=1&stc=1
la flèche en blanc indique le mouvement de mon personnage.
Les tuiles encadrées en rouge contiennent la propriété "blocked".
Le trait bleu est la collision que je détecte.
Cette collision semble bien être avec un angle de 45° mais ma map semble être avec un angle de 26 degrés.Bizarre tout ça. Je dois louper quelque chose.
Est-ce un problème avec la création de ma carte?
Voici le code de la création de la carte dans la méthode show de ma classe GameScreen qui implémente l'interface Screen:
Merci pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 TmxMapLoader loader = new TmxMapLoader(); map = loader.load("maps/test.tmx"); renderer = new IsometricTiledMapRenderer(map); camera = new OrthographicCamera(); TiledMapTileLayer collisionLayer = (TiledMapTileLayer) map.getLayers().get("foreground"); EntityManager.createPlayer(1 * collisionLayer.getTileWidth()/2, 1 * collisionLayer.getTileHeight()/2, collisionLayer);
Partager