Unity 3D Far apparire immagine quando il player è vicino ad un oggetto

Stato
Discussione chiusa ad ulteriori risposte.

michele-moc

Utente Bronze
3 Febbraio 2017
9
3
0
25
Ciao a tutti!!! Ho un grande problema con Unity essendo un novellino. Vorrei "semplicemente ottenere un effetto per cui quando il giocatore si avvicina ad una determinata zona, appare un'immagine nello schermo e quando questo si allontana, l'immagine sparisce. Guardandomi intorno non ho trovato un tutorial in cui qualcono spiegasse esattamente come fare. Vi prego aiutatemi, sono disperato :ehm: !!!
 
Ciao a tutti!!! Ho un grande problema con Unity essendo un novellino. Vorrei "semplicemente ottenere un effetto per cui quando il giocatore si avvicina ad una determinata zona, appare un'immagine nello schermo e quando questo si allontana, l'immagine sparisce. Guardandomi intorno non ho trovato un tutorial in cui qualcono spiegasse esattamente come fare. Vi prego aiutatemi, sono disperato :ehm: !!!
Ciao,
puoi mettere un trigger attorno alla zona e poi con uno script che metti sullo stesso oggetto in cui vi e' il trigger usa le funzioni:
OnTriggerEnter per capire se il player entra nell area: https://docs.unity3d.com/ScriptReference/Collider.OnTriggerEnter.html
e OnTriggerExit per capire quando esce: https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerExit.html

Per far appire l'immagine usa l'ui, che attivi/disattivi dalle due funzioni sopra.

PS: il trigger e' un collider che non influisce sulla fisica https://unity3d.com/learn/tutorials/topics/physics/colliders-triggers
 
Da quello che hai scritto, credo di aver fatto una cosa del genere. Ho creato un Cube disattivando la sua mesh, messo la spunta su "Is a Trigger", poi ho creato una canvas all'interno della quale ho messo un'immagine. Se sono su Scene, l'immagine si vede. Dopodichè ho utilizzato questo script (non so se sia giusto o meno) e l'ho collegato al Cube. Quando vado il play mode, entrando nel Cube con il player non appare nulla. :\
(Grazie per la disponibilità e per la velocità delle risposte, davvero!)
Immagine.png
 
Da quello che hai scritto, credo di aver fatto una cosa del genere. Ho creato un Cube disattivando la sua mesh, messo la spunta su "Is a Trigger", poi ho creato una canvas all'interno della quale ho messo un'immagine. Se sono su Scene, l'immagine si vede. Dopodichè ho utilizzato questo script (non so se sia giusto o meno) e l'ho collegato al Cube. Quando vado il play mode, entrando nel Cube con il player non appare nulla. :\
(Grazie per la disponibilità e per la velocità delle risposte, davvero!)Visualizza allegato 20632
Il tuo scirpt non fa nulla per attivare l'immagine, setta solo una variabile bool. Anzi l'immagine non si vede non perche e' disattivata ma perche' imposti il suo colore a (0,0,0,0).

Per attivare un component usa:
C#:
antincedioImmage.enabled = true; // attiva - visibile
antincedioImmage.enabled = false; // disattiva - invisibile
Detto questo nelle funzioni onTriggerEnder/Exit dopo:
C#:
entrance = true;
// e
entrance = false;
metti:
C#:
antincedioImmage.enabled = entrance;

Consigli per migliorare:
- Evita le variabili public se il loro contenuto serve unicamente alla classe. Piuttosto usa [SerializeField] per fare vedere una variabile privata nell'inspector
- Evita variabili inutili come ShedaTecnica. Pui assegnare direttamente l'immagine in antincedioImmage.

Se vuoi poi creare un animazione di fade, devi "giocare" coi colori.
Per farlo modifica solo la alpha del colore e non modificare gli altri tre valori (rgb). Quindi non usare Color.Clear ma piuttosto una cosa simile:
C#:
Color c = myImage.color; // recupera il colore attuale
c.a = 0; //modifica solo la alpha del colore
myImage.color = c; // imposta il colore con la alpha a 0
Qusto ti permette di mantentere un eventuale colore che assegni all'immagine da inspector.

Ps: al posto di inserire un immagine usa l'appsotito tag per inserire il codice copiandolo e incollandolo.
 
Ciao! Il tuo aiuto è stato essenziale, ma sono riuscito a capire anche che il fatto che nelle parentesi della funzione Trigger ci fosse scritto "Collider col) gli dava fastidio. Infatti ora lo script è questo, molto più semplice e funzionante! Grazie!!!:yo:
Immagine.png
 
Stato
Discussione chiusa ad ulteriori risposte.