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

Java Discussion :

detection collisions 2D


Sujet :

Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 42
    Par défaut detection collisions 2D
    bonjour à tous,

    j'ai pour but de créer un petit jeu 2d style mario en java, j'ai plusieurs idées en têtes et la structure globale des classes est pas mal avancée cependant plusieurs problèmes se posent :

    mes différents éléments sont des rectangles, donc la collision simple (retour d'un booléen) est assez simple mais mon idée serait de savoir d'où vient la collision (d'en haut, gauche, droite..) par exemple une collision avec un ennemi :

    si "mario" touche un ennemi sur les cotés, il perd de la vie, s'il touche l'ennemi du haut, l'ennemi meurt et disparait.

    donc une fois la détection et la direction de la collision établie, comment mettre en place le code pour changer les états des éléments (vie de mario en moins, ennemi mort, bonus récupéré...)

    aussi concernant les déplacements, s'il y a 2 directions (haut + saut par exemple) et que "mario se tape la tête" sur un élément de décor, comment le faire arrêter de sauter tout en avançant quand même??

    en espérant avoir été à peu près clair...

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2002
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 233
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    donc une fois la détection et la direction de la collision établie, comment mettre en place le code pour changer les états des éléments (vie de mario en moins, ennemi mort, bonus récupéré...)
    Ce sont de vastes questions que tu poses ! Je pense qu'il faut une bonne analyse (uml) avant de se lancer dans ce genre de projet. Je suppose qu'il y aura une classe Mario (qui etendra une classe sprite) avec en attribut un nombre de vie, pour les ennemis pkoi ne pas creer une classe de gestion des ennemis qui geres une collection de différents types d'ennemis, idems pour les bonus...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aussi concernant les déplacements, s'il y a 2 directions (haut + saut par exemple) et que "mario se tape la tête" sur un élément de décor, comment le faire arrêter de sauter tout en avançant quand même??
    Pour cela la classe mario doit avoir deux variables x, y pour les déplacements, il suffira de mettre y a 0 et de laisser x a sa vitesse de déplacement. x et y seront ensuite utilisé pour calculer la prochaine image afin de déplacer le joueur.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 42
    Par défaut
    re,

    j'ai lu quelque peu des bouquins/tutos sur les designs patterns donc pas beaucoup d'héritage mais de la composition, genre la classe "mario" qui implémente "Sprite", possède un objet "Behavior" qui spécifie de combien de pixel il se déplace pour chaque unité de temps (j'ai pas décidé encore la base de temps utilisée, 20, 50, 100ms...) et aussi la hauteur du saut, le type d'attaque (par contre ça je ne sais pas comment mettre ça en place correctement)

    je précise qu'une première version de ce jeu avait été faite en projet d'étude mais les design patterns n'avaient pas été vu (l'interface et le "model" étaient mélangés ) et le projet avait été fait à 3 donc moins pratique.

    là je veux repartir de zéro pour avoir du code réutilisable à l'avenir, notamment le gestionnaire de collision.

    maintenant concernant d'où vient la collision, j'ai trouvé (si 1 seule direction) : à un instant T0, 2 Sprites ne sont pas en collision, puis Sprite1 se déplace et rentre en collision avec Sprite2 (qui n'a pas bougé), donc il y a juste à regarder la direction (vecteur) prise par Sprite1.

    s'il y a 2 directions (GAUCHE + HAUT), je pars d'un des coins du Sprite déplacé (cf. pj) et je regarde quel bord est touché. mais traduire ça en code je vois pas trop pour l'instant.
    Images attachées Images attachées  

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 42
    Par défaut
    up

Discussions similaires

  1. Architecture class detection collision
    Par saturn1 dans le forum XNA/Monogame
    Réponses: 0
    Dernier message: 12/10/2010, 19h42
  2. jeu xWing detection collision
    Par marcuscircus dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 26/11/2009, 21h39
  3. [Pygame] detection collision en utilisant surface.get_at
    Par Gavroche7 dans le forum Programmation multimédia/Jeux
    Réponses: 5
    Dernier message: 24/01/2009, 09h18
  4. Detecter des collisions
    Par jmoati dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 10/04/2005, 16h22

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