IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

[LibGdx] [isometric map Tmx] collision avec des tuiles


Sujet :

2D Java

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut [LibGdx] [isometric map Tmx] collision avec des tuiles
    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:
    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;
    	}
    Pour déplacer mon personnage, j'utilise:
    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);
    	}
    Et les coordonnées transmises sont bonnes.

    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:
    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);
    Merci pour votre aide.
    Images attachées Images attachées  

Discussions similaires

  1. [XNA] Problème de collision avec des tiles
    Par Ryokath dans le forum C#
    Réponses: 0
    Dernier message: 10/03/2014, 14h21
  2. Collision avec des droites
    Par Pantoled dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 02/03/2009, 19h43
  3. [Newton] Probleme de collision avec la map
    Par drcd dans le forum Newton
    Réponses: 3
    Dernier message: 09/04/2008, 22h39
  4. Réponses: 2
    Dernier message: 02/02/2008, 19h04
  5. gestion des collisions avec sdl
    Par kirtap1969 dans le forum SDL
    Réponses: 3
    Dernier message: 18/10/2007, 21h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo