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

SDL Discussion :

Rotation hitbox


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2015
    Messages : 9
    Par défaut Rotation hitbox
    Bonjour,

    Je développe un petit jeu avec SDL2 et j'ai un petit souci de hitbox sur certains de mes objets en 3D isométriques.
    Par exemple sur cette capture on voit en noir la hitbox du Space ship (un SDL_Rect) qui ne correspond pas au sprite :
    Nom : SDL_hitbox.png
Affichages : 555
Taille : 132,3 Ko

    J'ai lu qu'il n'était pas possible nativement de tourner un SDL_Rect. Du coup je me demandais si il existe une méthode simple pour avoir une hitbox rectangulaire mais avec un angle (définir les points manuellement peut-être ?).
    Ou si quelqu'un à une autre méthode pour arriver à avoir une hitbox qui colle à mes sprites ?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    c'est certain qu'un rectangle on commence à le tourner c'est plus un rectangle simple notion de géométrie de première...
    et pourquoi-pas utiliser des cercles ?

  3. #3
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Alors la SDL n'a pas pour but de gérer les hitbox , le SDL_Rect , alors ça date mais à ma connaissance la SDL ne renvoie pas le w/h sur cette structure.
    (et celle que tu lui envoie est pour le découpage de ton sprite).

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    SDL_Rect c'est (x,y) du coin haut gauche, largeur et hauteur.
    SDL de base est pas vraiment pour faire autre chose que de la simple 2D, et non isométrique.
    Soit tu crées ta propre boundingbox avec un losange (ou hexagone ou ce que tu veux), soit tu aggrandis ton rectangle actuel pour englober tout, soit tu vis avec le fait que quelques pixels ne collide pas.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2015
    Messages : 9
    Par défaut
    Merci pour vos réponses

    Citation Envoyé par Mat.M Voir le message
    c'est certain qu'un rectangle on commence à le tourner c'est plus un rectangle simple notion de géométrie de première...
    et pourquoi-pas utiliser des cercles ?
    Un cercle ça ferait pas l'affaire, mais une ellipse oui. Par contre j'imagine que c'est plus complexe pour calculer les collisions derrière...

    Citation Envoyé par Kannagi Voir le message
    Alors la SDL n'a pas pour but de gérer les hitbox , le SDL_Rect , alors ça date mais à ma connaissance la SDL ne renvoie pas le w/h sur cette structure.
    (et celle que tu lui envoie est pour le découpage de ton sprite).
    Non on a bien le w et h sur le SDL_Rect (en plus du x et y). D'ailleurs j'utilise la fonction SDL_HasIntersection pour vérifier si il y a collision entre mon personnage et un élément et ça fonctionne bien comme ça

    Citation Envoyé par Bousk Voir le message
    SDL_Rect c'est (x,y) du coin haut gauche, largeur et hauteur.
    SDL de base est pas vraiment pour faire autre chose que de la simple 2D, et non isométrique.
    Soit tu crées ta propre boundingbox avec un losange (ou hexagone ou ce que tu veux), soit tu aggrandis ton rectangle actuel pour englober tout, soit tu vis avec le fait que quelques pixels ne collide pas.
    Quand tu dis créer ma propre boundingbox, ce serait avec SDL en définissant des points spécifiques suivant la forme de mon sprite ?

  6. #6
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Me suis mal exprimé ,je parlais de la texture que la SDL renvoie , mais ok peut etre qu'il renvoie un SDK_rect.

    Sinon comme dit Bousk :
    soit tu vis avec le fait que quelques pixels ne collide pas.
    C'est plus courant qu'on n'imagine d'avoir une hitbox spécifique qui ne représente pas du tout le sprite.
    Du coup pour ma part ,la hitbox est complètement indépendant de l'affichage ou de la taille du sprite.

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2015
    Messages : 9
    Par défaut
    Citation Envoyé par Kannagi Voir le message
    Me suis mal exprimé ,je parlais de la texture que la SDL renvoie , mais ok peut etre qu'il renvoie un SDK_rect.

    Sinon comme dit Bousk :

    C'est plus courant qu'on n'imagine d'avoir une hitbox spécifique qui ne représente pas du tout le sprite.
    Du coup pour ma part ,la hitbox est complètement indépendant de l'affichage ou de la taille du sprite.
    En fait dans mon cas j'ai 2 SDL_Rect : un pour la texture (qui colle parfaitement au sprite du coup) et un autre qui me sert de hitbox (c'est pour ça que dans ma capture le rectangle ne colle pas à l'image : c'est voulu pour garder l'effet 3D iso).
    Mais mon souci vient de l'angle du space ship qui ne s'adapte pas à un rectangle même d'une taille inférieure au sprite.

  8. #8
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    Citation Envoyé par Emmanuel.Jacques Voir le message
    Quand tu dis créer ma propre boundingbox, ce serait avec SDL en définissant des points spécifiques suivant la forme de mon sprite ?
    c'est la solution que j'ai adoptée avec mon propre éditeur de niveaux.
    Ce que je fais c'est que j'utilise 4 coordonnées soit 8 points après il faut déterminer si un point est inscrit dans le polygone décrit par ces points.
    S'il y a collision alors agir ou pas.

    Nom : collisions_2d.jpg
Affichages : 447
Taille : 97,6 Ko

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2015
    Messages : 9
    Par défaut


    Ca peut être une solution alternative aux hitbox multiples que j'envisage. Je me demande lequel est le plus performant des deux
    Est-ce que tu as suivit un tuto pour mettre ça en place ou tu aurais un bout de code exemple pour que je vois comment faire ça ?

Discussions similaires

  1. Problème de rotation
    Par Francky033 dans le forum DirectX
    Réponses: 1
    Dernier message: 17/07/2003, 16h38
  2. Rotation de Bitmap -> ScanLine
    Par jujuesteban dans le forum Langage
    Réponses: 7
    Dernier message: 03/07/2003, 15h11
  3. Rotation d'un bouton ?
    Par ken_survivant dans le forum Composants
    Réponses: 3
    Dernier message: 01/04/2003, 18h16
  4. matrice et rotation
    Par charly dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 07/12/2002, 17h59
  5. algo : rotation d'objet 3d
    Par numeror dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 19/08/2002, 22h58

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