Affichage de caractéristiques

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Archibald44
Messages : 3
Inscription : 21 Déc 2017 17:40

Affichage de caractéristiques

Message par Archibald44 » 21 Déc 2017 17:44

Bonjour à tous !

Débutant sur Unity je me pose une question :

Sur un univers, puis-je attribuer des tableau de caractéristique à certains élements ?

Exemple : Sur une maison je m'approche d'une poutre en bois, en m'approchant de cette poutre et en appuyant sur une touche, une sorte de tableau de caractéristiques apparaît concercant cette poutre ?

Merci à ceux qui prendront le temps de me répondre

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6247
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Affichage de caractéristiques

Message par boubouk50 » 21 Déc 2017 17:56

bah oui, mais faut le programmer.
Chaque élément possédera un Component Caracteristique qui contiendra les infos voulues.
Ensuite si tu cliques/pointes/vises/regardes un objet caractérisé (via Raycast par exemple), tu ouvriras un élément d'UI qui ira chercher ce Component et affichera les données internes.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Archibald44
Messages : 3
Inscription : 21 Déc 2017 17:40

Re: Affichage de caractéristiques

Message par Archibald44 » 22 Déc 2017 11:30

Merci boubouk de ta réponse rapide !

Je comprend le principe, étant débutant j'essaie d'allé au plus simple.

Je comprend le Raycast mais je ne sais pas programmé, il y aurait il un autre moyen ? Comme les portes quand on rentre dans une zone la porte s'ouvre, la je voudrai faire apparait le texte quoi ^^

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6247
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Affichage de caractéristiques

Message par boubouk50 » 22 Déc 2017 12:20

Archibald44 a écrit :
22 Déc 2017 11:30
Je comprend le principe, étant débutant j'essaie d'allé au plus simple.
[...]
Je comprend le Raycast mais je ne sais pas programmé, il y aurait il un autre moyen ?
Euh, oui... Apprendre les bases de la programmation? (lien dans ma signature).
Clairement faire un jeu sans programmer est hyper limité. Tu peux surement trouver des codes sur le net mais ils ne seront jamais spécifiques à ton projet, aussi souvent il faut sortir le portefeuille...
Sans réellement devenir un pro, les bases de la programmation te permettront de scripter ce genre de petites fonctionnalités, ce qui déjà en soi t'aidera à avancer beaucoup plus vite et pousser plus loin ton jeu.
Sinon pour les réticents, il y a playmaker, un système de scripting nodal, où tu relies des actions. Mais c'est payant.

J'avoue que je ne sais pas faire ce genre de choses sans coder... et je ne vois pas comment faire sans.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Archibald44
Messages : 3
Inscription : 21 Déc 2017 17:40

Re: Affichage de caractéristiques

Message par Archibald44 » 22 Déc 2017 16:51

Bon j'ai réussi à me débrouiller !

Donc quand mon First personne point avec la réticule l'objet, mes caractéristiques apparaissent ! ( Youpii ) :o :super:

Donc je me suis dis tien je vais le faire pour d'autres objets de la même scènes et la paf ... ne fonctionne plus !

Ma méthode : Crée un UI texte avec un canevas que je renomme display, je l'associe a mon objet en question ou je souhaite que le texte apparaissent, à cet objet je lui attribut ce script :

Code : Tout sélectionner

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
 
public class displayUI : MonoBehaviour {
 
    public string myString;
    public Text myText;
    public float fadeTime;
    public bool displayInfo;
 
    // Use this for initialization
    void Start () {
     
        myText = GameObject.Find ("Text").GetComponent<Text> ();
        myText.color = Color.clear;
        //Screen.showCursor = false;
        //Screen.lockCursor = true;
    }
     
    // Update is called once per frame
    void Update () 
    {
 
        FadeText ();
 
        /*if (Input.GetKeyDown (KeyCode.Escape)) 
         
                {
                        Screen.lockCursor = false;
                         
                }
                */
 
     
    }
 
    void OnMouseOver()
    {
        displayInfo = true;
 
    }
 
 
 
    void OnMouseExit()
 
    {
        displayInfo = false;
 
    }
 
 
    void FadeText ()
 
    {
 
 
        if(displayInfo)
        {
 
            myText.text = myString;
            myText.color = Color.Lerp (myText.color, Color.white, fadeTime * Time.deltaTime);
        }
     
        else
        {
         
            myText.color = Color.Lerp (myText.color, Color.clear, fadeTime * Time.deltaTime);
        }
         
 
 
 
        }
 
 
 
}
Donc la tout fonctionne pour un objet, mais quand je l'applique à un autre objet de la scène avec la même méthode mon texte reste apprant dès le début, est ce que parce que le script gère qu'un seul canveva renommé display ? .... :rouge:
 ! Message de : boubouk50
Balises code STP

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6247
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Affichage de caractéristiques

Message par boubouk50 » 22 Déc 2017 17:04

Aie, c'est pas très très jouli comme code tout ça.

Déjà, il faut que tu ailles voir du côté des coroutines au lieu de passer par l'Update ().
Ensuite, éviter à tout prix le Find. Tu as une variable publique, renseigne le text la dedans depuis l'éditeur. Ici, si tu as plusieurs objets appelés Text, alors Unity va te renvoyer le premier qu'il trouve.
Aussi, un Component appelé CanvasGroup a une propriété d'alpha qui permet le fade.

Enfin, et c'est la le plus important: ce script sera interprété pour CHACUN des gameObjects qui le possèdent. Donc tout le monde va appeler le FadeIn et Out en même temps. Et c'est le joyeux bordel.

Il faut repenser l'architecture. Ce script ne doit apparaître qu'une seule fois pour n'être pas exécuté plusieurs fois en même temps. Tu dois avoir un manager qui détecte les objets visés (ou se fait appeler par ces objets) et lui va envoyer l'information de fadeIn ou fadeOut.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « Unity le logiciel »