Author Topic: Creare un Jump Pad in UT  (Read 3579 times)

Offline RennyManJr

  • Liandri Overseer
    • View Profile
    • www.runesofwar.net
Creare un Jump Pad in UT
« on: 06, March, 2014, 13:37:11 PM »
Durante la lavorazione della mia ultima mappa mi è capitato di dover impostare alcuni Jump Pad. La cosa non si è rivelata esattamente la passeggiata che mi aspettavo, ma non per via della complessità della creazione quanto per la fase di tweaking. Vediamo intanto come fare:

Il Kicker

Oltre a creare visivamente il jump pad, ovvero creare una pedana o qualcosa che ne identifichi la posizione, il componente principale che ne permette il funzionamento è il Kicker. Si tratta di un actor che dà una determinata spinta in una certa direzione ai giocatori o, in casi particolari, anche ad altri tipi di oggetti.

Per aggiungere il kicker dobbiamo selezionarlo dall'actor browser, sotto la voce Triggers -> Kicker e successivamente aggiungerlo tramite click destro nella posizione desiderata.


Una volta aggiunto dovremo impostare per bene la collisione, ovvero quanto sarà grande l'area che lo farà scattare. Controlliamo nelle proprietà, sotto a Collision, che bCollideActors sia impostato su True e diamoci da fare con CollisionHeight (altezza) e CollisionRadius (raggio) per impostare un "cilindro di collisione" adeguato alla grandezza del nostro jump pad.

La parte più difficile viene ora, ovvero impostare la forza e la direzione del kicker. Nelle proprietà posizioniamoci nella sezione Kicker ed espandiamo KickVelocity. Esatto, questi tre valori, corrispondenti ai tre assi X Y e Z sono i valori che determineranno la direzione in cui verremo lanciati. Non c'è un campo che determina la forza della spinta perché viene calcolata proprio grazie a questi 3 parametri, più aumentiamo un valore (e quindi la distanza) più grande sarà la forza che il kicker ci imprimerà.
X e Y sono le coordinate orizzontali, rispettivamete Nord-Sud e Est-Ovest, mentre Z è la spinta verticale. Ricordate che il valore negativo inverte la direzione, quindi nel caso di Z un valore negativo ci spingerà verso il basso.


L'impostazione della direzione è la più laboriosa del kicker e richiede pazienza e un numero di test notevoli soprattutto per via dei bot in quanto non sono in grado di usare l'air control bene come noi umani. Per questo, se state facendo un jump pad verticale, non imprimete solo forza sull'asse Z ma cercate sempre di indirizzare leggermente il salto verso la destinazione.

Un altro parametro utile da impostare su True è bKillVelocity. Questa opzione dovrebbe azzerare la velocità di chi tocca il kicker prima di lanciarlo, rendendo quindi più accurata la spinta che abbiamo impostato noi. Questo in teoria perché a quanto pare la cosa non funziona benissimo, alcune volte viene ignorato e, ad occhio e croce, non funziona mai se raggiungiamo il kicker con un salto. Tuttavia mettiamolo, qualche volta è sempre meglio di niente!

Il Supporto ai Bot

Dire ai bot come usare il kicker è esattamente identico a dirgli di usare un ascensore, infatti si usano anche gli stessi Navigation Point! Aggiungete un LifCenter al centro del Jump Pad, in corrispondenza del Kicker andrà benissimo, e due LiftExit: uno nel punto in cui volete che i bot si approccino al Pad e l'altro nel punto in cui volete che atterrino.


Fatto questo entrate nelle proprietà, espandete LiftCenter/LiftExit e date un LiftTag identico a tutti e tre. Ovviamente se c'è più di un Jump Pad nel livello date un nome diverso ai LiftTag degli altri, ma questo era ovvio, no? :)

Aggiungere un Suono

Un Jump Pad senza un suono è quasi l'apoteosi della tristezza. Quasi come aprire un topic per fare la classica domanda dei Viewport bianchi. Siccome noi siamo qui per fare le cose a modo ora aggiungeremo il suono di attivazione del Pad!

Andiamo nell'Actor browser e aggiungiamo un Trigger e uno SpecialEvent, entrambi nelle vicinanze. La cosa funzionerà in questo modo: il Trigger verrà attivato tramite la collisione con un giocatore/bot e farà scattare lo SpecialEvent a lui collegato che riprodurrà il suono del Jump Pad.

Apriamo le proprietà del Trigger e in Collision accertiamoci per prima cosa che bCollideActors sia True e in seguito impostiamo CollisionHeight e CollisionRadius agli stessi identici valori che abbiamo messo nelle collisioni del Kicker. Ora, aiutandoci con il Radii View (che si attiva dal menu del click destro sulla barra grigia delle visuali) spostiamo il Trigger in modo da metterlo in corrispondenza con il kicker il più precisamente possibile. Il suono deve attivarsi sempre, se le collisioni sono nello stesso punto il gioco è fatto.

Sempre nelle proprietà, sotto Events diamo un nome personalizzato al campo Event, qualcosa tipo "suonopad1" andrà benissimo. Tag lasciatelo stare.

Andiamo nel campo Trigger e controlliamo che bInitiallyActive sia True e che TriggerType sia impostato per reagire a TT_PlayerProximity.


Col Trigger abbiamo finito. Passiamo allo SpecialEvent che, per prima cosa, dobbiamo collegare al Trigger. Andiamo su Events e mettiamo nel campo Tag il nome personalizzato che abbiamo dato al Trigger, nel mio esempio "suonopad1". Event lasciatelo stare.

Andiamo in Object e nel campo InitialState scegliamo PlaySoundEffect, altrimenti rimarrà completamente muto e passiamo infine nel campo SpecialEvent dove, in Sound, andremo a specificare quale suono vogliamo. Non ce ne sono molti adatti nei pacchetti originali del gioco, quello che viene usato di solito lo trovate nel pacchetto UnrealI -> Pickups -> BootJmp.

Done?

Si. Beh, ovviamente potete sempre continuare a testarlo e tweakkare i valori per renderlo il più preciso possibile. Una cosa che è giusto far notare è che i bot (sempre loro!) tendono ad interpretare i Jump Pad verticali come se fossero piatti, perciò se anche indirizzandoli continueranno a saltare a ripetizione sappiate che è un loro limite e non un problema del vostro kicker. Il massimo che potete fare è cercare di limitare la cosa il più possibile.

Buon divertimento!



Mini Checklist

1) Aggiungi un Trigger
-Collision
   bCollideActors True
   CollisionHeight settalo
   CollisionRadius settalo
-Events
   Event - dai il nome personalizzato
   Tag Trigger (default)
-Trigger
   bInitiallyActive True
   TriggerType TT_PlayerProximity


2) Aggiungi uno SpecialEvent
-Collision
   bCollideActors True
   ma il resto è default
-Events
   Event None
   Tag - rimetti il nome personalizz.
-Object
   InitialState PlaySoundEffect
-SpecialEvent
   Sound Sound'UnrealI.Pickups.BootJmp'