EXILES OF UED Welcome, Guest. Please login or register.

Login with username, password and session length
  2269 Posts in 250 Topics by 65 Members Latest Member: Siberio
* HOME HELP BENVENUTO LOGIN REGISTER 
Pages: [1] Go Down Print (text only)Print (with images)
Author Topic: Mover, LoopMover e SpinMover  (Read 665 times)
RennyManJr
Building Better Worlds...

Location: Carpi (MO)


Offline

View Profile WWW
« on: 02, December, 2007, 00:24:42 AM »

In questa lezione inziamo a scoprire come costruire e impostare delle mesh animate, ovvero quelle che vengono comunemente chiamate Mover (e così faremo anche noi per il resto delle nostre lezioni).

I mover possono diventare qualsiasi cosa, si utilizzano principalmente per fare ascensori e porte, ma possono anche essere dettagli di contorno come ventole che girano, macchinari che vibrano, pistoni e quant'altro.

NOTA: per tutti coloro che hanno già familiarità con i vecchi editor, è vero, la procedura ora è più complessa, ma è decisamente più chiara e ci permette un livello di controllo molto più approfondito di quanto non potessimo avere con i vecchi Editor.

Cominciamo con l'esempio più utile per tutti, e cioè...

CREARE UN ASCENSORE
/!\ - Attenzione: questa procedura è valida per Gears of War, ma non per UT3

Avete la vostra mappa a portata di mano? Bene. Supponiamo che ci siano 2 piani e che ci sia bisogno di un bell'ascensore per permettere ai giocatori di salire. Decidetene la posizione e possiamo cominciare.

Per prima cosa abbiamo bisogno di una static mesh, aprite lo static mesh browser e cercatene uno che vi piaccia o importatene uno fatto da voi. Il passo successivo è quello di aggiungerlo alla mappa come "Mover", per fare questo selezionate la mesh nel browser, tornate nella mappa e cliccate col destro più o meno dove vorrete che venga piazzato. Nel menu che si aprirà scegliete Add Actor -> Add Mover.


Abbiamo aggiunto la mesh dell'ascensore! Ora dobbiamo aggiungere un trigger (vicino all'ascensore o sopra di esso) facendo click destro più o meno dove lo vogliamo e scegliendo Add Actor -> Add Trigger.


Facile fino a qui, no? Adesso inizia la parte più complessa... ma non vi spaventate, non è così terribile!

Apriamo il Kismet, usando il pulsante con la grossa K nella toolbar in alto, torniamo un secondo alla mappa per assicurarci che il Trigger che abbiamo appena aggiunto sia selezionato (se non lo è selezionatelo con un singolo click) e, nella finestra del Kismet, facciamo click destro da qualche parte sullo sfondo. Dal menu selezioniamo New Event Using Trigger_0 -> Touch.


L'esagono che abbiamo appena aggiunto rappresenta il Trigger che abbiamo creato nella mappa e siccome è un evento Touch, le due scritte Touched e Untouched vicino ai quadratini neri sono gli unici 2 eventi che possono capitare nella sua monotona e triste esistenza: ossia che venga toccato da un giocatore oppure che non venga toccato da nessuno. Ah, dimenticavo, i quadratini si chiamano nodi.

Ma questo esagono da solo non servirà a nulla, immaginate che questo trigger sia l'interruttore che fa muovere l'ascensore, che però non si può muovere se non gli facciamo uno schemino dettagliato del percorso che deve fare. Adesso cliccate col destro da qualche parte sullo sfondo e scegliete New Matinee. Questo bel quadratone è il nostro "pannello di controllo" dell'azione che l'ascensore andrà ad eseguire quando lo useremo (ovvero quando toccheremo l'interruttore, inizia ad essere più chiaro? Big Grin), perciò colleghiamo il nodo "Touched" di Trigger_0 al nodo "Play" di Matinee. Per farlo è sufficiente cliccare sul quadratino e trascinare la freccia che si creerà fino alla destinazione.


Torniamo un secondo nel livello e selezioniamo il Mover dell'ascensore. Mentre è selezionato facciamo doppio click sul quadratone Matinee che abbiamo appena aggiunto nel Kismet. Facendo questo abbiamo aperto il Matinee Editor.

  • Il Matinee editor è un sottoeditor interno all'UnrealED. Inizialmente è nato per gestire le cutscene, ma nell'UE3 è stato potenziato per gestire tutte le cose in movimento della mappa.

Dobbiamo creare un nuovo gruppo, è difficile spiegare dove bisogna cliccare, per questo ho messo il punto esclamativo nello screenshot qui in basso. In pratica nella parte marroncina della sezione che sta appena sotto al Curve Editor, esattamente sotto i tre pulsantini All, Cameras e Skeletal Meshes. Fate click destro e scegliete Add New Empty Group. Il nome del gruppo è facoltativo, tanto in seguito non ci servirà più.


Ora fate click destro sul gruppo che abbiamo appena creato e, dal menu, scegliete Add New Movement Track.


Abbiamo appena associato una traccia di movimento all'ascensore, ora dobbiamo solo definire le posizioni di partenza e di arrivo. Impostiamo adesso due posizioni chiave nella Movement Track (in realtà una sola, visto che la prima dovrebbe già essere al suo posto): si aggiungono cliccando col sinistro nella time bar in fondo alla finestra del Matinee editor, cercando il secondo esatto in cui le vogliamo, e si posizionano col pulsante Add Key in alto a sinistra. Una dovrà essere all'inizio come si vede nello screenshot (se non la vedete spostate la time bar cliccando sulla striscia bianca e trascinate), l'altra dove vogliamo.


Se entrambe le posizioni chiave sono piazzate, possiamo dare un'occhiata al matinee editor e capire meglio come funziona. Credo che la chiave per capirne il funzionamento sia la linea di fine. Questa linea può essere spostata avanti e indietro lungo la time bar a seconda di quanto tempo ci serve per l'animazione. Le posizioni chiave che abbiamo aggiunto possono essere posizionate ovunque entro la linea di fine, ma l'animazione non si fermerà quando incontrerà la posizione che noi vogliamo come posizione finale, bensì continuerà fino a che non avrà incontrato la linea di fine.

Poniamo caso che abbiate spostato la linea di fine a 10 secondi e la posizione chiave finale a 2 secondi. Cosa accade quando un player sale sull'ascensore? L'animazione inizierà e in 2 secondi l'ascensore si muoverà e raggiungerà la sua destinazione. Siccome la linea di fine è più avanti ci saranno altri 8 secondi in cui l'ascensore non si muoverà finchè la linea di fine non verrà raggiunta. Potreste pensare che questa pausa alla fine è un ottimo modo per controllare il tempo in cui l'ascensore rimarrà “aperto”, ma ci sono modi migliori, perciò mettete la linea di fine molto vicino alla posizione chiave finale.

Dopo aver piazzato la seconda posizione chiave assicuratevi di lasciarla selezionata e, prima di fare qualsiasi altra cosa, tornate al livello (lasciando il matinee editor aperto!!!) e spostate l'ascensore alla sua destinazione. Fate attenzione a muoverlo con le freccine colorate, altrimenti l'editor potrebbe non memorizzare correttamente la posizione che gli diamo.

A questo punto possiamo vedere l'animazione con il pulsante di play in alto.


Bene, con il matinee abbiamo finito. Chiudiamolo e torniamo al Kismet. Il nostro ascensore è già funzionante, ma sarà bene apportare qualche miglioria importante. Ad esempio, così com'è configurato ora, funzionerà una sola volta e non ritornerà da solo nella posizione iniziale. Come risolvere? Con un paio di semplicissimi script in Kismet.

Nel quadratone del matinee, se connettiamo l'uscita Completed con l'entrata Reverse faremo tornare l'ascensore al suo stato iniziale. Piccolo problema: lo farà una volta sola. Perciò aspettate a connetterli e risolviamo nel mentre anche il problema della pausa dell'ascensore quando è in posizione “aperta”.

Clicchiamo col destro sullo sfondo e aggiungiamo un nodo delay con Action -> Misc -> Delay, per settare la pausa (il “delay” appunto) basta cliccarci sopra ed editare la voce Duration nelle proprietà che vengono mostrate nella parte inferiore della finestra del Kismet.


Ora non ci resta che collegare insieme il tutto: colleghiamo il nodo d'uscita del matinee Completed con l'entrata Start del Delay, mentre l'uscita Finished del Delay andrà collegata con il Reverse del Matinee. Se sbagliate qualche collegamento potete rompere la freccina cliccando sul nodo incriminato tenendo premuto Alt sulla tastiera. Non è stato troppo difficile, vero?


L'ultima cosa da fare è configurare il Trigger. Clicchiamoci sopra e nelle sue proprietà assicuriamoci che bEnabled sia True e che nel campo di testo di MaxTriggerCount ci sia 0. MaxTriggerCount serve per impostare il numero di volte che il trigger può essere attivato e lo zero sta per infinito.

Finito! Il nostro ascensore ora è perfettamente funzionante!

NOTA: Se l'ascensore non viene illuminato è perchè nessuna delle luci che ha intorno ha il canale Dynamic abilitato. Selezionate una delle luci vicine al mover, andate nelle sue proprietà ed espandete le voci Light e LightAffectClassification. Vedrete una lista di canali con la casellina di spunta a fianco, andate su Dynamic e spuntatelo. Smile


Riassunto veloce

1) Aggiungi una static mesh usando però Add -> Mover
2) Aggiungile un trigger sopra o accanto (Add -> Trigger)
3) Col trigger selezionato apri il Kismet e aggiungi New Event Using Trigger_0 -> Touch
4) Sempre in Kismet aggiungi un Matinee (click destro -> New Matinee)
5) Collega il nodo "Touched" di Trigger_0 al nodo "Play" di Matinee
6) Seleziona la mesh e in Kismet apri il Matinee Editor (doppio click su Matinee)
7) Crea un nuovo gruppo, cliccaci sopra col destro e scegli Add New Movement Track
8) Aggiungi 2 posizioni chiave, una all'inizio, l'altra dove vuoi e sposta la linea di fine vicino alla seconda
9) Con la posizione finale selezionata torna nella mappa e sposta l'ascensore a destinazione
10) Chiudi il matinee e nel Kismet fai click destro -> Action -> Misc -> Delay e configura la pausa
11) Collega [Matinee] Completed -> Start [Delay] e [Delay] Finished -> Reverse [Matinee]
12) Click sul trigger e nelle proprietà configura bEnabled=true e MaxTriggerCount=0
13) Fine!


CREARE UN'ANIMAZIONE RIPETUTA

Fare un'animazione che viene ripetuta (vedi l'esempio del pistone che menzionavo all'inizio, una pressa, un braccio meccanico di una catena di montaggio, una finestra che sbatte con il vento, una piattaforma mobile...) ora è diventato estremamente semplice una volta capito il procedimento descritto qui sopra.

Dovrete impostare il vostro Mover nella maniera consueta. Questo significa aggiungere la mesh dell'ascensore alla mappa, aggiungere un nodo Matinee nel kismet e dargli il movimento con il Matinee Editor come abbiamo visto prima. Fatto questo tornate al kismet.

Il Trigger e il nodo che lo rappresenta nel Kismet non ci servono, perciò saltateli (infatti non li ho inclusi nel procedimento che ho appena detto!). Tornate al Kismet e al posto del Trigger fate click destro e aggiungete New Event -> LevelStartup. Questo evento, ovviamente, serve per forzare un'azione all'avvio del livello.


Ora collegate il nodo Level Startup all'ingresso Play del Matinee. Collegate l'uscita Completed del Matinee al suo stesso Reverse e infine l'uscita Aborted di nuovo all'ingresso Play.

Spiegazione rapida di cosa abbiamo fatto: all'avvio del livello l'animazione inizierà. Raggiunta la sua posizione finale (completed) l'animazione si riavvolgerà (reverse) e, quando avrà raggiunto di nuovo la sua posizione iniziale (aborted... non ha senso che si chiami così in effetti), ricomincierà da capo.


CREARE UN'ANIMAZIONE CHE ROTEA COSTANTEMENTE

Volete creare qualcosa che giri costantemente su se stesso? (Tipo una bobina, la ruota di un mulino, un ingranaggio, una ventola d'aerazione...) E' ancora più semplice dell'esempio precedente. Questa volta non serve nemmeno il Kismet!

Aggiungete una mesh al livello come Mover e aprite le sue proprietà con F4 o click destro -> proprietà. Espandete la sezione Movement, cercate Rotation Rate e settate un numero in uno qualsiasi degli assi. Il numero in questi campi è espresso in gradi al secondo, ossia di quanti gradi d'inclinazione si sposta la mesh in un secondo. Se impostate 90° farà un quarto di giro al secondo, con 180° farà mezzo giro al secondo e così via...


Ora, tornando alla sezione Movement, cambiate il settaggio della proprietà Physics da PHYS_Interpolating a PHYS_Rotating.

Tutto qui.
« Last Edit: 02, August, 2008, 20:42:05 PM by RennyManJr » Logged
Pages: [1] Go Up Print (text only)Print (with images)
 
Jump to:  
Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC
Exiles 1.1 design by RennyManJr
Valid XHTML 1.0! Valid CSS!