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

Programmation multimédia/Jeux Python Discussion :

Collision avec une image partiellement transparente


Sujet :

Programmation multimédia/Jeux Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 216
    Par défaut Collision avec une image partiellement transparente
    Bonjour a toutes et a tous ,
    J'ai des soucis de collision avec cette image qui est plus ou moins transparente . Lorsque la collision se produit entre le laser ennemi (se déplace de droite a gauche) et cette image , le laser est censé être supprimé , parfois il passe a travers parfois il est stoppé . Je ne vois pas comment faire pour qu'il soit éliminé a chaque contact .
    Voici l'image du Sprite 'héro' qui laisse plus ou moins visible le fond bleu étoilé ( qui défile de droite a gauche)

    Nom : Capture d’écran 2024-10-04 à 07.34.59.jpg
Affichages : 119
Taille : 21,7 Ko

    Voici le début de la classe de cette image :

    [CODE]class spaceship():
    def __init__(self):
    self.image = pygame.image.load('spaceship0.png').convert_alpha()
    self.spaceship_mask = pygame.mask.from_surface(self.image)/CODE]

    puis dans la gestion de la collision :

    [CODE] for laser in enemylasers: # gestion de la collision des lasers de enemylasers vers le vaisseau héro
    offset_x = battleship.rect.x - laser.rect.x
    offset_y = battleship.rect.y - laser.rect.y
    if laser.laser_mask.overlap(battleship.spaceship_mask, (offset_x, offset_y)):
    enemylasers.pop(enemylasers.index(laser))
    if no_protection:
    offset = shake()
    battleship.hit()/CODE]
    Images attachées Images attachées  

  2. #2
    Membre confirmé
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 216
    Par défaut
    Désolé pour la mise en page qui a foiré

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 066
    Par défaut
    Je pense que c'est le calcul de l'offset qui pèche.
    Le laser arrivant par la droite a un offset positif , si par exemple le vaisseau est à x=0 et le laser à x=10, dans ton calcul on obtient un offset de -10, donc en dehors du mask du vaisseau.
    Je pense qu'il faut juste changer le signe du résultat.

  4. #4
    Membre confirmé
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 216
    Par défaut
    Merci de ton aide .
    Je suis pas sur d'avoir compris concrètement comment faire dans le code .
    Par ailleurs , le laser est bloqué sur la partie supérieur de la ligne rouge et laisse tout passer en dessous .
    C'est une image png avec plus ou moins de transparence sur certaine zone de l'image .

    Nom : sphere_finale_ligne.png
Affichages : 87
Taille : 59,8 Ko

    Avec la meme image mais cette fois ci sans la sphere avec ses zones de transparence , tout est bloqué :

    Nom : spaceship0.png
Affichages : 83
Taille : 49,4 Ko

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 066
    Par défaut
    Faudrait poster un .zip pour qu'on puisse faire des tests .

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/04/2007, 20h40
  2. Prob avec une image
    Par inferno66667 dans le forum Langage
    Réponses: 2
    Dernier message: 18/11/2005, 11h09
  3. problème pour faire un insert avec une image
    Par vbcasimir dans le forum Modules
    Réponses: 3
    Dernier message: 02/11/2005, 09h21
  4. [javascript] Scroll avec une image
    Par Salih-du-91 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/10/2005, 07h46
  5. Centrage de texte avec une image en arriere plan
    Par MasterOfChakhaL dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 26/08/2005, 18h31

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