Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Open Group  ·  103 members

Unreal Engine
Willis

Attivare un widget al passaggio del mouse

Recommended Posts

Ciao

Sto cercando di fare in modo che quando passo con il mouse sopra ad un muro mi si attivi un widget, in realtà l'idea finale è quella che si attivi con la crocetta rossa centrale durante il suo passaggio.

 

Riesco a fare attivare il widget quando entro in un box collisione, ma non riesco al passaggio del mouse.

 

Ho scritto questa blueprints richiamando il comando "onbegincursorover" tenendo selezionato il muro

Avete suggerimenti?

 

a.jpg

b.jpg

Share this post


Link to post
Share on other sites

Non sono ancora riuscito a fare quello che volevo e per il momento sto facendo in altro modo, ma ho ancora un problema.

Praticamente ho fatto una BP in cui quando premo il tasto centrale del mouse compare un widget e compare anche il mouse in modo da poter cliccare i Button e quindi cambiare materiali, colori etc. fin qui tutto bene, ho però un problema quando faccio scomparire il menù facendo un secondo click con il tasto centrale e cioè, il widget scompare come dovrebbe, però le rotazioni del personaggio non tornano più come prima, ma riesco a ruotare solamente circa 180°.

 

Per ricapitolare, prima di attivare il widget giro la scena con il movimento destra e sinistra del mouse, se continuo a spostare il mouse verso destra o sinistra il personaggio continua a ruotare su se stesso come una trottola. 

Dopo aver attivato il widget e poi disattivato, il cursore scompare dallo schermo come giusto che sia, ma se continuo a spostare il mouse verso destra o sinistra, il personaggio fa una mezza rotazione e poi si blocca.

 

Questa è la BP 

 

01.JPG

Share this post


Link to post
Share on other sites

Risolvo un problema e ne creo un altro.

Il problema della rotazione del personaggio non l'ho ancora risolto, però sono riuscito ad attivare il widget al click del mouse, ora il problema è che se per disattivare il widget inserisco "on released" come da immagine, non ho la possibilità di cliccare sulle opzioni del widget dato che come rilascio il mouse si spegne anche il widget.

 

Quindi, vorrei fare così

-Attivare il widget cliccando sull'oggetto (fatto)

-Lasciare attivo il widget anche al rilascio del click (fatto togliendo il comando "on released")

-Disattivare il widget cliccando con il tasto centrale del mouse, ed ho quindi scritto questa parte di BP (Aggiungendo il comando nascondi widget ed assegnandolo al tasto centrale nel project setting/input). Però il widget rimane...

 

1.JPG

Share this post


Link to post
Share on other sites
Posted (edited)

Eh non saprei come fare per aggiungere una variabile, non le so usare. 😅

Ho provato a sostituire il remove widget con from parent, ma sicuramente sbaglio qualcosa io perchè non succede comunque niente.

 

Per il personaggio invece ho usato un BPfirstperson come base, i parametri li ho lasciati stare.

 

 

001.JPG

002.JPG


Edited by Willis

Share this post


Link to post
Share on other sites

Ho provato anche con un flip flop, al primo click compare il widget al secondo scompare, questa parte funziona, ma quando scompare non riesco a tornare alla navigazione iniziale

 

Cattura.JPG

Share this post


Link to post
Share on other sites
Posted (edited)

Prova così:

Questo nell'oggetto interagibile.

 

290946796_2020-04-21(1).thumb.png.36afcc18cb36c40364e24611d1f75a11.png

 

 

Questo nel event graph del widget in questione.  La chiusura del widget deve "partire" dal widget stesso.. evita tutta una serie di complicanze. Realisticamente dopo che cambi ad esempio la skin premendo un pulsante su tale menù-widget il menù widget si chiude (diventa invisibile in questo caso). Oppure puoi associare tale chiusura ad un pulsante X di chiusura del menù. 

 

2020-04-21.png.724c751fd79e0fa900a99b6e111d5520.png

 

 


Edited by Bruno E

Share this post


Link to post
Share on other sites

Sto provando a riscrivere ciò che hai postato, ma visto che sono agli inizi ho ancora dei problemi, nella prima parte la variabile che chiami widget è una variabile di tipo button object reference? Ed è solamente da creare o ci ci sono parametri da modificare al suo interno? 

Andando avanti dopo branch e create widget, c'è un set, ho provato con "set widget" ma poi non posso collegarlo ne al create widget precedente ne al "add to viewport" quindi immagino sia un'altra voce 

Share this post


Link to post
Share on other sites
Posted (edited)

Quella variabile te la crei spostando il pin blu da "Create New Widget" e  fai "promote to variable". Praticamente ciò che crea (l'oggetto widget),  viene subito associato ad una variabile.   Non devi crearla "manualmente" o cercare l'oggetti widget.. l'utilità di promote to variable è proprio quella di dire:

"Adesso che mi hai creato questo widget, identificamelo subito in una variabile in maniera tale che io possa richiamare tale oggetto widget dove mi pare"



E come puoi vedere dallo script, nulla vieta di chiamare quella variabile anche PRIMA che lo script, di fatto, l'abbia associata. 

 

In quella parte:    if -> is valid 

Essendo quella variabile = a "null"     , quell'   if     semplicemente ricadrà su false.  E procederà. Procedendo creerà il widget e la variabile assumerà un valore.


Edited by Bruno E

Share this post


Link to post
Share on other sites
Posted (edited)

uhm... sembra giusto... non saprei dire perchè l'icona è diversa.  Non dovrebbe cambiare nulla nel funzionamento dello script onestamente.  Fintanto che l'hai creata  così dovrebbe funzionare.

 

461670000_2020-04-21(3).png.0e35f3d83c077a69ed35abd2ee61ee40.png


Edited by Bruno E

Share this post


Link to post
Share on other sites

Continuo a non riuscire. Nel momento che clicco play a differenza del tuo video, nel mio file comincio a navigare con "wasd" e il mouse scompare subito, che è quello che voglio, mentre nel tuo la freccia rimane, poi quando passi sull'oggetto diventa a forma di mano.

 

Nel mio caso non compare nessun mouse, cosa che ero riuscito a fare con la vecchia BP. Non so proprio il perchè adesso non compaia...

Share this post


Link to post
Share on other sites

Ho provato a modificare come da schermata, praticamente al primo click compare il mouse al secondo scompare, però se tengo il nodo branch su true, quando clicco la prima volta compare il mouse e quando clicco la seconda scompare e torno a navigare normalmente, ma il widget non compare.

Se lo metto su false, quando clicco la prima volta compare il widget, ma al secondo click non succede più niente e il widget non scompare

 

Cattura.JPG

Share this post


Link to post
Share on other sites
Posted (edited)

Ho fatto un piccolo passo avanti, posto un video che si capisce meglio.

Praticamente fino al 15° secondo quello che accade è quello che voglio, così si capisce cosa intendo, il problema adesso è che se continuo a mostrare/nascondere il widget e tutte le volte che clicco sull'oggetto sposto anche il mouse, pian pianino mi ritrovo a non aver più il cursore al centro dello schermo (dal 40° secondo in poi) e ciò comporta che se vado a farmi un giro nella scena e poi torno con il mio oggetto centrale allo schermo non lo becco più perchè il cursore (nascosto come voglio che sia) non si trova più centrale allo schermo.

Video youtube

 


Edited by Willis

Share this post


Link to post
Share on other sites

C'è anche la possibilità di scrivere la stessa BP se invece che una staticmesh ne ho due all'interno? Ho provato raggruppando le due static mesh in una scene, ma con la scene non posso attivare il comando "on clicked".

Share this post


Link to post
Share on other sites

Perfetto per il mouse era proprio quello che cercavo grazie.

 

Per quanto riguarda le static mesh intendo, faccio un esempio, ho 3 muri, voglio cambiare materiale a tutti e tre i muri contemporaneamente, quindi inserisco le 3 static mesh come target all'interno della BP, fin qui tutto bene.

 

Con la BP che ho scritto, di cui riporto l'immagine, riesco a far cambiare il colore dei muri a tutte le static mesh che voglio, ma il mio limite è che il comando inizia con il click solamente su di una di esse. Dato che richiamo il comando "on clicked" selezionando solamente una SM.

Quindi per farla breve, il widget compare se clicco sul muro A, ma se clicco sul muro B e C il widget, per come ho scritto la BP non si apre.

 

 

Cattura.JPG

Share this post


Link to post
Share on other sites

Puoi fare in diversi modi.

Il più semplice è Inserire ONCLICKED per ogni muro e poi collegarli a Flip/Flop

1-Puoi fare arrivare le 2 frecce bianche in ingresso su Flip/Flop dai due ONCLICKED (uno per ogni muro) 

2-Oppure dopo ogni ONCLICKED puoi usare un CALL CUSTOM EVENT e linkare poi il Custom Event a Flip/Flop

 

Sennò puoi anche usare un metodo un po' più complesso creando un BP actor per ogni muro ed usare GET ALL ACTORS OF CLASS ma se non sai usare gli Array e i comandi FOR EACH LOOP ho paura di complicarti solo la vita..

 

Share this post


Link to post
Share on other sites

Ok, mi sembrava di aver provato a collegarli entrambi al flip flop, invece si vede di no. Si anche così mi può andare bene.

grazie  😉

Share this post


Link to post
Share on other sites

Entra nel Club

Devi essere un utente del Club per poter lasciare un commento. Entra


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...
Aspetta! x