[Résolu] Empêcher de cliquer sur un objet situé derrière un Panel

Questions à propos du GUI, y compris la partie script.
JollyStone
Messages : 9
Inscription : 03 Avr 2019 15:09
Localisation : Liège (B)

[Résolu] Empêcher de cliquer sur un objet situé derrière un Panel

Message par JollyStone » 07 Sep 2019 12:20

Bonjour,

Comment empêcher qu'un clic agisse sur un objet (Sprite) se trouvant derrière un Panel lorsque celui-ci est affiché ?

La situation est toute simple :
Le jeu consiste à faire tourner de 90° les objets sur lesquels un clic est effectué.
Lorsque le niveau est complété, le Canvas est activé et affiché par-dessus les objets (Sprites) de la scènes.
Le Canvas contient un Panel et quelques boutons.
Je cherche donc à empêcher un clic d'agir sur les objets en arrière plan.
Dernière édition par JollyStone le 07 Sep 2019 14:03, édité 1 fois.

Avatar de l’utilisateur
Alesk
Messages : 2086
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Empêcher de cliquer sur un objet situé derrière un Panel

Message par Alesk » 07 Sep 2019 12:37

Salut,

Tu as deux options simples :

1) lorsque le canvas est affiché, tu ajoutes un test dans ta fonction de test de raycast pour qu'il ne soit plus effectué

2) tu ajoutes un collider sur le canvas pour qu'il bloque les raycasts

JollyStone
Messages : 9
Inscription : 03 Avr 2019 15:09
Localisation : Liège (B)

Re: Empêcher de cliquer sur un objet situé derrière un Panel

Message par JollyStone » 07 Sep 2019 13:50

Salut Alesk,

J'ai tenté ta proposition d'ajouter un Collider (avec ou sans Rigidbody) au Canvas, en vain.
Même test sur le Panel, même résultat.

Quant à ta proposition te tester le Raycast, je ne comprends pas comment faire ça.
En fait, je n'utilise pas de Raycast, j'utilise OnMouseDown sur les Sprites qui contiennent un collider

Je précise que c'est un jeu en 2D, ça change peut-être quelque chose. :roll:

Quoi qu'il en soit, merci pour ton aide.

[Édit]
Bon, je viens de tester une autre idée…
La complication ici viens du fait que les objets sont instanciés.
Je récupère donc les instances dans un tableau et je désactive les Colliders de chaque instance dans une boucle Foreach.
Ce n'est sans doute pas la méthode la plus simple mais ça fonctionne.

Disons que le problème est résolu, mais…

Répondre

Revenir vers « L'interface GUI »