Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Soucis de collision  (Lu 3139 fois)

0 Membres et 1 Invité sur ce sujet

Jamese

  • Jr. Member
  • **
  • Messages: 72
    • Voir le profil
Soucis de collision
« le: Décembre 21, 2014, 02:10:27 pm »
Bonjour, mon problème est le suivant :
Je veux voir si il y a collision entre 2 sprites mais il ne sont pas défini dans la même classe, et j'ai des petits problèmes.
Voici les code minimiser au problème :
mon main :
(click to show/hide)

ship.h:
(click to show/hide)
ship.cpp
(click to show/hide)

Enemy.h
(click to show/hide)
enemy.cpp
(click to show/hide)

le compilo me sort cette erreur : "class ship has no member named 'intersect'". Sa je voie d'ou sa viens mais du coup je ne voie pas comment faire pour pouvoir gérer cette collision.
J'implore donc votre aide car la je sèche
« Modifié: Décembre 22, 2014, 11:59:46 am par Jamese »

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Soucis de collision
« Réponse #1 le: Décembre 21, 2014, 02:16:11 pm »
Comment veux-tu utiliser une fonction qui n'existe pas ? Faut la créer. ???

Jamese

  • Jr. Member
  • **
  • Messages: 72
    • Voir le profil
Re : Soucis de collision
« Réponse #2 le: Décembre 21, 2014, 05:36:25 pm »
merci de ta réponse mais pour un petit "noob" comme moi je voie pas comment faire car on ne peut pas utiliser un objet* dans une autre classe,
( *je doit pas utiliser les bon termes )

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Soucis de collision
« Réponse #3 le: Décembre 21, 2014, 06:40:37 pm »
Ben faut apprendre à utiliser un argument d'une fonction alors car c'est un peu la base. ^^ Dans ta fonction draw tu utilises target pourtant, c'est pareil.

Déjà, pourquoi tu l'as pas créée la fonction intersect ? Essaie, on verra ce que ça donne.
Pourquoi tu parles de objet* (pointeur donc) alors que ni vaisseau ni tes ennemies ne sont des pointeurs ?

Jamese

  • Jr. Member
  • **
  • Messages: 72
    • Voir le profil
Re : Soucis de collision
« Réponse #4 le: Décembre 21, 2014, 07:47:40 pm »
pour l'histoire du mot : objet* si j'ai mis une Astérix c'étais pour faire allusion au commentaire du dessous après pour mon gros problème j'ai fait sa mais c'est pire ( je vais passer pour un incorrigible débutant mais bon tampis je préfère post que de rester sans réponse. Et puis on apprend de ces erreur non ?

voila ce que j'ai fait :
class Ship : public sf::Drawable , public sf::Transformable , sf::FloatRect
et
class Enemy : public sf::Drawable , public sf::Transformable , sf::FloatRect
mais bon sa me sort un erreur : sf:: rect<float> is an inaccessible of Enemy et la même pour Ship.

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Soucis de collision
« Réponse #5 le: Décembre 21, 2014, 08:10:45 pm »
Pour les classes l'héritage par défaut est privé.
Pour drawable et transformable tu as mis public, mais pour floatrect rien donc il est privé et pas accessible ;)

Jamese

  • Jr. Member
  • **
  • Messages: 72
    • Voir le profil
Re : Soucis de collision
« Réponse #6 le: Décembre 21, 2014, 08:49:37 pm »
^^ effectivement sa marche mieux  :)
merci a toi et bonne soirée

Jamese

  • Jr. Member
  • **
  • Messages: 72
    • Voir le profil
Re : Soucis de collision
« Réponse #7 le: Décembre 22, 2014, 12:05:26 pm »
enfaîte mon compilo me sort plus d'erreur mais la collision ne semble pas être détecter.

J'ai fait cette condition :
if (vaisseau.intersects(flo_bouton))
    {
       cout << "blopblop" << endl;
    }

le float rect du bouton est declarer dans le main comme ceci :
        sf::Sprite Spr_bouton;
        sf::Texture Text_bouton;
        Text_bouton.loadFromFile("ressource/texture/t.png");
        Spr_bouton.setTexture(Text_bouton);
        Spr_bouton.setPosition(484,289);
        FloatRect flo_bouton = Spr_bouton.getGlobalBounds();

Et j'ai aucune idée d'où cela peut venir.

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Soucis de collision
« Réponse #8 le: Décembre 22, 2014, 01:27:48 pm »
Si vaisseau est un FloatRect (par héritage), sa valeur ne va pas se remplir par magie. Faut que tu donnes une valeur (et l'actualises quand tu déplaces ton vaisseau) à tes membres left top width et height.
Ou alors tu fais pas d'héritage (car y'a pas trop de raison et que c'est un peu galère), et tu fais directement un return Spr_ship.getGlobalBounds().intersects(truc); à l'intérieur d'une fonction intersects (ou nommée comme tu veux) créée par tes soins dans Ship.

Jamese

  • Jr. Member
  • **
  • Messages: 72
    • Voir le profil
Re : Soucis de collision
« Réponse #9 le: Décembre 22, 2014, 01:33:43 pm »
Ok merci a toi je vais regarder sa et je te tien au jus  :)