Page 1 sur 1
un peu comme SpritePixelCollision....svp
Publié : ven. 19/juin/2009 3:07
par chikun
bonjour, je dois allé bosser , alors je vous passe le relais
existe t'il une instruction (pour un sprite 2D) qui indique qu'il y a collision avec un objet sur l'ecran. juste le fait kil y a collision. valeur=1 si collision, sans comparer tout ce qui s'y trouve...
ps:
soyez indulgent , voir patient avec Jbernard13, g toujours voulu faire de la guitare depuis + 20, je ne fais que de pincer les cordes

Publié : ven. 19/juin/2009 8:33
par TazNormand
tu veux quoi exactement ?
Tester si un sprite est en collision avec une image ?
Peut-être que tester les coordonnées sprite/"objet" serait une bonne piste.
Sinon, tu n'as qu'à mettre ton objet en sprite, et tester une collision simple des 2 sprites.
En espérant t'avoir aidé...
Concernant la patience avec JB13, j'ai pas saisi l'allusion, tu peux développer ?
Publié : ven. 19/juin/2009 8:43
par Atomo
SpriteCollision() ?
Publié : ven. 19/juin/2009 13:08
par chikun
TazNormand:
Ok, je vais essayer d'être plus clair
Imaginons un rond(sprite) qui se promène en 2D sur un écran (fenêtre) parsemé de croix (sprite).
Pour "voir" si le rond touche une croix, en général (du moins je crois), on utilise spritepixelcollision qui comparait notre rond à la croix1 puis la croix2, la croix3 etc....
il n'y a t'il pas une instruction qui prévient simplement que le rond à "touché" une croix....
une instruction qui renvoi la valeur=1 par exemple quand 2 sprites sont en collision
hmm, je réédite ce post car il est possible que ma question soit idiote en ce sens que le seul moyen de savoir si un sprite rencontre un autre, il n'y que la comparaison de position en emplacement mémoire, mais des fois que.....je peux egalement metre les croix dans un tableau reduit (uniquement constitué de points virtuels) (échelle) et diminuer le temps de comparaison comme me là indiquer Djes....
je sais que c chiant de lire: en gros, si vous devez comparez un rond avec 40 croix sur un ecran , coment feriez vous?
Publié : ven. 19/juin/2009 13:18
par TazNormand
ben si, spritepixelcollision() ou spritecollision() comme souligné par Atomo.
La doc dit :
SpritePixelCollision()
Syntaxe
Resultat = SpritePixelCollision(#Sprite1, x1, y1, #Sprite2, x2, y2)
Description
Teste si les deux Sprites se chevauchent. Si ce n'est pas le cas, Resultat = 0. La hauteur et la largeur des sprites sont déjà connues de Purebasic, seules les coordonnées x et y de chaque sprite sont nécessaires.
Cette fonction effectue une comparaison pixel par pixel sur les pixels transparents des deux sprites ce qui rend la routine très précise mais également relativement lente. Pour optimiser au maximum la comparaison, il convient d'enlever le plus possible la zone transparente autour du sprite, pour ne garder que sa dimension réelle.
Note : SpriteCollision() est testé en interne avant de lancer la comparaison.
Utilisez SpriteCollision() pour un test de collision moins précis mais plus rapide.
Note : SpritePixelCollision() ne prend pas en compte le canal alpha des sprites , il est ignoré.
et
SpriteCollision()
Syntaxe
Resultat = SpriteCollision(#Sprite1, x1, y1, #Sprite2, x2, y2)
Description
Teste si les deux Sprites se chevauchent. Si ce n'est pas le cas, Resultat = 0. La hauteur et la largeur des sprites sont déjà connues de Purebasic, seules les coordonnées x et y de chaque sprite sont nécessaires.
Cette fonction teste une zone rectangulaire, ce qui la rend rapide mais peu précise, mais cependant très utile dans des jeux d'arcade.
Utilisez SpritePixelCollision() pour un test de collision précis.
Après si tu veux tester qu'un sprite touche TOUS LES AUTRES de l'écran, il te suffit d'utiliser les listes chainées. une liste chainée pour tes fourmis (je suppose que c'est pour ton simulateur de fourmi), une autre pour d'autres sprites, j'ai un code de BIGScrolling qui teste la collision entre mes smileys qui bougent aprtout, et les caractères du scrolling ,
visible ici
Publié : ven. 19/juin/2009 13:31
par chikun
TazNormand:
nos notes se sont croisées,
ok pour spritecollision, mais tu es daccord que je dois faire une boucle pour comparer mon rond à chacunes de mes croix !!
ps: c pas pour les fourmis non
Publié : ven. 19/juin/2009 19:20
par djes
Tu peux dessiner toutes tes croix dans un seul gros sprite et utiliser spritepixelcollision.
Publié : sam. 20/juin/2009 3:43
par chikun
djes

ta soluce me tue, tu as compris mon blem et tu viens de m'éclairer grave de chez grave, ton idée ouvre pour d'autre code bien des perspective
En te remerciant Monsieur
