Créer une infobulle en utilisant un onMouseOver()

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Linnoa
Messages : 7
Inscription : 04 Juil 2012 13:12

Créer une infobulle en utilisant un onMouseOver()

Message par Linnoa » 04 Juil 2012 13:19

Bonjour à tous,

J'ai un petit problème et j'espère que quelqu'un pourra m'aider. Je débute sur Unity.
Ce que j'aimerai faire c'est quand je passe ma souris sur un objet comme un panneau par exemple, cela affiche des informations complémentaires dans une infobulle (par exemple) contenant du texte où se trouve le curseur de ma souris.
Je vous remercie d'avance pour vos réponses.

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Créer une infobulle en utilisant un onMouseOver()

Message par cayou66 » 04 Juil 2012 13:39

Hello,
il faut que ton objet ai un collider, pour se faire tu cliques sur l'objet en question, et tu vas dans Component -> Physics -> BoxCollider, par exemple.
Ensuite il te faut un script sur cet objet, avec la fonction OnMouseOver
http://docs.unity3d.com/Documentation/S ... eOver.html

Là dedans tu peux faire ce que tu veux du coup. Par exemple prévenir ta caméra en lui disant "on me survole !".

L'autre solution alternative est de faire un raycast tout droit depuis la position de ta souris, et de récupérer l'objet touché, si c'est le panneau tu réagis en fonction.
http://docs.unity3d.com/Documentation/S ... ycast.html
Il faut toujours le collider sur l'objet, sinon pas de détection.
En vérité le OnMouseOver fait un raycast pour toi.

Linnoa
Messages : 7
Inscription : 04 Juil 2012 13:12

Re: Créer une infobulle en utilisant un onMouseOver()

Message par Linnoa » 04 Juil 2012 13:44

Je te remercie pour ta réponse, je vais regarder ça :).

Linnoa
Messages : 7
Inscription : 04 Juil 2012 13:12

Re: Créer une infobulle en utilisant un onMouseOver()

Message par Linnoa » 04 Juil 2012 13:55

J'arrive pas à faire apparaitre mon texte sur le curseur de ma souris comme tu me le dis "Là dedans tu peux faire ce que tu veux du coup."

Avatar de l’utilisateur
Ahbadiane
Messages : 218
Inscription : 08 Avr 2012 09:28
Localisation : Champagne : Reims-Epernay

Re: Créer une infobulle en utilisant un onMouseOver()

Message par Ahbadiane » 04 Juil 2012 14:09

Tu peux montrer le bout de code qui reconnait le survol de la souris et l'affichage (certainement dans OnMouseOver)

Linnoa
Messages : 7
Inscription : 04 Juil 2012 13:12

Re: Créer une infobulle en utilisant un onMouseOver()

Message par Linnoa » 04 Juil 2012 14:13

En fait j'arrive à faire apparaitre du texte avec le survol de la souris, mais ce que je voudrais c'est qu'il s'affiche au niveau du curseur de la souris.
Le code ressemble à cela:

Code : Tout sélectionner

var afficher : boolean = false;

function OnGUI() {
	if (afficher == true) {
		GUI.Label (Rect (10, 10, 100, 20), "Test");
	}
}

function OnMouseOver () {
    afficher = true;
}

function OnMouseExit () {
	afficher = false;
}

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Créer une infobulle en utilisant un onMouseOver()

Message par cayou66 » 04 Juil 2012 14:20

Le collider sur l'objet est présent? C'est une boite verte normalement. Vérifies qu'il fait bien tout ton objet.

Linnoa
Messages : 7
Inscription : 04 Juil 2012 13:12

Re: Créer une infobulle en utilisant un onMouseOver()

Message par Linnoa » 04 Juil 2012 14:22

Mon script marche, je te rassure mais le problème, c'est que je ne sais pas comment afficher mon GUI.Label au niveau du curseur de la souris.

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: Créer une infobulle en utilisant un onMouseOver()

Message par Max » 04 Juil 2012 14:25

Il te faut un lien de position pour afficher GUIlabel pour afficher
ton label où tu le souhaites.
Un truc comme ça devrait marcher

Code : Tout sélectionner

   private bool afficher =false;

   // Use this for initialization
   void Start () {   
   }
   
   void OnGUI() {
      Event e = Event.current;
	   Vector2 guipos;
      guipos.x = e.mousePosition.x;
      guipos.y = e.mousePosition.y;   
		
      if(afficher )
          GUI.Label (new Rect (guipos.x, guipos.y, 100, 20), "Test");
    }
   
   void OnMouseOver() {
      afficher = true;
    }
 
   void OnMouseExit () {
   afficher = false;
   }
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Linnoa
Messages : 7
Inscription : 04 Juil 2012 13:12

Re: Créer une infobulle en utilisant un onMouseOver()

Message par Linnoa » 04 Juil 2012 14:45

Je te remercie, le script marche très bien en C#, mais je n'arrive pas à le retranscrire en JavaScript. J'ai une erreur.

Répondre

Revenir vers « Scripting »