|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2008 Messages : 30 ![]() |
Bonjour à tous,
J'ai deux questions, à propos de pygame et des sprites. - La première est purement technique : si j'ai un "group" de sprites, y'a-t-il une manière facile d'enlever le premier/dernier élément ajouté ? J'ai lu quelque part que group.remove() acceptait un entier en entrée pour l'index de l'élément à enlever. Mais quand j'essaye, même si ça ne plante pas, il n'enlève aucun élément au group. La seule façon que j'ai trouvé est d'avoir une deuxième liste, une bête liste, avec les même objets que dans le group, comme ça pour enlever un sprite dans la première, je fais appel à la seconde avec un truc du style group.remove(liste(-1)). Mais évidemment, du coup j'ai deux listes au lieu d'une, ce n'est pas très pratique... Je suis sûr qu'il y a un meilleur moyen de faire ça, quelqu'un a une idée ? - La seconde est plus générale. Bon, les sprites, rect et tout, c'est super... mais c'est rectangulaire. Que me conseilleriez-vous pour détecter des collisions entre un point et un objet (que je cherche donc à construire) ayant une forme plus complexe ? Ma première idée était de faire un ensemble de rect assez petits pour approximer la forme en question, mais je ne sais pas trop comment faire ça bien (disons en partant d'une image de l'objet en question, qui a des contours évidemment bien définis).Une idée ? Merci d'avance de vos lumières ! |
|
|
00
|
|
|
#2 | |
|
Membre chevronné
![]() Inscription : avril 2004 Messages : 675 ![]() |
pour la 1, je me suis toujours passé de la class sprite ...
mais: Citation:
mongroup.remove([unsprite, unautresprite,[foosprite,barsripte,...],...]) et non pas un int ... pour la 2 je dirai: lire le niveau alpha directement ou à partir d'un mask. |
|
|
|
00
|
|
|
#3 |
|
Membre expérimenté
![]() Inscription : août 2010 Messages : 516 ![]() |
1/ si tu n'as qu'un groupe, sprite.kill() (personnellement je n'utilise plus les classes group non plus)
2/ Tout dépend si tu as besoin d'une collision exacte des pixels, ou d'approximations géométriques (chaque objet est alors une réunion de formes -rect,circle-) |
|
|
00
|
|
|
#4 | |
|
Membre Expert
![]() Développeur en systèmes embarqués Inscription : mars 2006 Messages : 763 ![]() |
Salut,
Citation:
A+ Pfeuh |
|
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2008 Messages : 30 ![]() |
Bonjour à tous,
Désolé du temps de réponse imprévu. Je vous remercie de vos réponses. Pour la 1, je vais effectivement laisser tomber les groupes de sprites (à VV33D ; précisément, je ne peux pas faire sprite.kill(), puisque l'objet sprite est ce que je veux retrouver, je ne sais pas si tu vois ce que je veux dire), en attendant de peut-être laisser tomber les sprites eux-mêmes. Pour la 2, je vais utiliser une méthode intermédiaire je pense : je vais "paver" la forme avec des rectangles de différentes tailles (une dizaine, ou une vingtaine), mais sans descendre jusqu'au pixel. Je n'ai pas besoin que ça soit ultra précis dans tous les cas, et les formes en question ne sont pas ultra tordues. Merci ! |
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Inscription : avril 2004 Messages : 675 ![]() |
"Que me conseilleriez-vous pour détecter des collisions entre un point et un objet"
Mais pourquoi ne veux-tu pas lire la valeur du point en question ? Ca prendra moins de temps que de collidelist() une vingtaine de Rects ... |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com