Page 1 sur 1
Sélection d'un sprite avec la souris
Publié : mer. 18/juil./2018 21:12
par bombseb
Bonjour,
Une petite question, j'aimerais savoir sur quel sprite j'ai cliqué.... Comment dois-je faire ?
Faire une bidouille avec SpritePixelCollision ?
J'affiche mes sprites en question avec DisplayTransparentSprite. Je ne peux donc pas faire un test des coordonnées de la souris car les pixels au bord de mes sprites sont transparents...
Merci pour votre aide car là je sèche un peu...
Re: Sélection d'un sprite avec la souris
Publié : mer. 18/juil./2018 22:38
par case
tu connais la position de tes sprites donc tu peux tester les coordonnes de la souris et du sprite pour voir si la souris est dans le sprite si tu veux un truc plus precis tu peux definir des hitbox sur le sprite et tester si la souris est dedans.
Re: Sélection d'un sprite avec la souris
Publié : jeu. 19/juil./2018 8:52
par Cool Dji
Hello BomSeb,
[Edit] Un truc du genre
Si tu as 5 sprites, tu les déclares de 1 à 5.
Code : Tout sélectionner
InitSprite()
InitMouse()
InitKeyboard()
;----- Ouvre un Screen Plein écran
ExamineDesktops()
ScreenWidth=DesktopWidth(0)
ScreenHeight=DesktopHeight(0)
OpenScreen(ScreenWidth, ScreenHeight, 32, "")
;-- creation du sprite n°1 de la souris
CreateSprite(1,10,10,#PB_Sprite_AlphaBlending | #PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(1))
Circle(5,5,5,RGB(255,255,255))
StopDrawing()
TransparentSpriteColor(1,RGB(0,0,0))
;-- creation de 4 sprites à tester
For j=2 To 5
CreateSprite(j,100,100,#PB_Sprite_AlphaBlending | #PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(j))
Circle(50,50,50,RGB(255,0,0))
StopDrawing()
TransparentSpriteColor(j,RGB(0,0,0))
Next
Global Dim SpriteX(5), Dim SpriteY(5)
For j=2 To 5
SpriteX(j)=Random(500)
SpriteY(j)=Random(500)
Next
;-- Boucle principale
Repeat
ExamineKeyboard()
ExamineMouse()
ClearScreen(RGB(150,150,150))
; test tous les 4 sprites les uns après les autres, sachant que le sprite n°1 est la souris
For j=2 To 5
If SpritePixelCollision(1,MouseX(),MouseY(),j,SpriteX(j),SpriteY(j)) ; tu test tous les sprites avec celui de la souris tu peux ajouter une condition du clicj gauche ici aussi
; c'est le sprite n°j qui est en contact avec la souris représenté par le sprite n°1
; si contact, change les coordonnées du sprite touché
SpriteX(j)=Random(500)
SpriteY(j)=Random(500)
EndIf
;- Affiche les 4 sprites
DisplayTransparentSprite(j,SpriteX(j),SpriteY(j),255)
Next
;- affiche le sprite de la souris
DisplayTransparentSprite(1,MouseX(),MouseY(),255)
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Re: Sélection d'un sprite avec la souris
Publié : jeu. 19/juil./2018 12:52
par Kwai chang caine
@CoolDji
Ca énerve ton truc

Merci

Re: Sélection d'un sprite avec la souris
Publié : ven. 20/juil./2018 8:46
par Cool Dji
Salut KCC,
T'aurait vite fait de rendre cinglé un chat avec un truc comme ça sur une tablette...

Re: Sélection d'un sprite avec la souris
Publié : ven. 20/juil./2018 16:26
par Kwai chang caine
T'as raison...et vite fait d'aller en racheter une autre

Remarque si t'as un pote qui a un chat qui t’énerve.....allez hop, lance le giciel pose la tablette au bord de la fenêtre et..........

Re: Sélection d'un sprite avec la souris
Publié : sam. 21/juil./2018 7:41
par Micoute
Je ne comprends pas pourquoi ça ne fonctionne pas sur mon ordi.
Ca me fait une page grise qui se ferme quand je presse la touche Echap, mon sous système est OpenGL.
Re: Sélection d'un sprite avec la souris
Publié : sam. 21/juil./2018 16:55
par bombseb
Cool, merci pour votre aide,
Donc oui soit je teste les coordonnées de la souris, soit je créé un sprite "pointeur de souris" puis je teste les collisions avec les autres sprites...C'est bien ce que je pensais...
Je me disait qu'il y avait peut être plus simple...
Re: Sélection d'un sprite avec la souris
Publié : sam. 21/juil./2018 17:35
par SPH
bombseb a écrit :Cool, merci pour votre aide,
Donc oui soit je teste les coordonnées de la souris, soit je créé un sprite "pointeur de souris" puis je teste les collisions avec les autres sprites...C'est bien ce que je pensais...
Je me disait qu'il y avait peut être plus simple...
si tu as des sprites carrés, tu peux "tricher". C'est ce que j'ai fait dans mon jeu de scrabble. Je ne teste aucune collision entre sprites (avec la version officielle)

Re: Sélection d'un sprite avec la souris
Publié : dim. 22/juil./2018 13:40
par Ar-S
De toutes façon y'a pas 36 solutions.
Soit le programme compare les coordonnées de différents sprites et si elles se rencontrent => touché mais ça limite la forme des sprites. ça ça marche bien dans des jeux avec "des cases" (SPH) ou pour faire des GUI graphiques sympas. Mais pour du sprite animé ou ayant des formes, pixelcollision est fait pour ça.
Tu pourrais aussi utiliser un Point(X, Y) et comparer la couleur à celle du fond mais c'est une peu se compliquer la vie pour rien ^^