2014-11-03 14 views
8

Unity .getAxis(string name) sembra restituire l'offset del pensiero generato dall'input dell'utente (frecce, mouse o persino joystick). I valori di ritorno sono convenientemente nell'intervallo <-1; 1> tranne per la rotellina del mouse.Quali parametri posso usare con Unity Input.getAxis?

Da vari esempi di codice sono in grado di visualizzare molti modi per ottenere input, ma non sembra esserci alcun nome/lista di input effettivi. Nel mio caso, voglio abilitare lo zoom usando la ruota o PgUp e PgDn. Il codice della ruota è simile al seguente:

movement.y -= ResourceManager.ScrollSpeed * Input.GetAxis("Mouse ScrollWheel"); 

Ma per pagina e pagina? E, in generale, come posso sapere quali nomi usare in questo metodo?

risposta

9

Input.GetAxis e Input.GetButton (nonché GetButtonDown e GetButtonUp) solo restituire lo stato di uno degli assi di ingresso virtuali definiti nel Input manager.

I valori di ritorno non devono essere compresi nell'intervallo [-1, 1]. La maggior parte degli assi virtuali che rappresentano un valore assoluto sono rappresentati da un valore compreso tra -1 e 1. Tuttavia, vi sono assi che restituiscono movimento relativo come il "MouseWheel", "Mouse X" e "Mouse Y" predefiniti. Restituiscono la quantità di spostamento dell'asse dall'ultimo fotogramma.

MouseWheel presenta alcuni "problemi" aggiuntivi. Il valore delta viene preso dal sistema operativo. Se l'utente ha impostato la rotella di scorrimento per avanzare di 3 righe per "unità di scorrimento", otterrai valori di un multiplo di 3. Se riesci a far girare la ruota abbastanza velocemente potresti ottenere valori superiori a 3 o inferiori a -3.

Non ci sono assi predefiniti per PageUp o PageDown, tuttavia è possibile aggiungerli se lo si desidera. Ma attenzione, GetAxis restituirà lo stato dell'asse virtuale. Quindi quando tieni premuto il pulsante positivo otterrai un "1" finché tieni premuto il pulsante. Se vuoi ascoltare gli eventi devi usare GetButtonDown/GetButtonUp.

Tuttavia, se si desidera controllare un determinato tasto, è solitamente più semplice utilizzare GetKeyDown/GetKeyUp che accetta uno KeyCode.

Qualcosa di simile:

if(Input.GetKeyDown(KeyCode.PageUp)) 
    movement.y -= 1; 
if(Input.GetKeyDown(KeyCode.PageDown)) 
    movement.y += 1; 

modificare
Se volete sapere i nomi dei tasti comunemente disponibili, date un'occhiata alla pagina Conventional Game Input. In fondo c'è una lista dei nomi più comuni, inclusi "page up" e "page down". Il gestore di input di solito rifiuta nomi di chiavi errati. Quindi, se ne digiti uno, sfuma il campo di input e il valore rimane, è corretto.

Se si imposta un pulsante positivo ogni volta che si preme il pulsante, l'asse virtuale aumenterà "lentamente" da 0 a 1 a seconda dell'impostazione di "sensibilità". La sensibilità è come un fattore di accelerazione. Se rilasci il pulsante, ritornerà "lentamente" a 0 a seconda del valore di "gravità" che è un fattore di decelerazione.

Se si imposta un pulsante positivo e uno negativo, l'asse può andare su entrambi i lati fino a 1 quando si preme il pulsante positivo e in basso su -1 quando si preme il pulsante di selezione. Se "snap" è vero, ritornerebbe immediatamente a 0 se si preme il pulsante opposto anziché tornare lentamente a 0 e poi iniziare a crescere nella direzione opposta.

Il valore "morto" definisce la zona morta. Se il valore di un asse è inferiore a dead (o greatern than -dead) verrà trattato come 0. Questo è importante per i dispositivi di input analogici reali che di solito hanno qualche jitter attorno alla loro posizione di riposo.

Le restanti proprietà come "invert", "Tipo" e così via dovrebbero essere chiare durante la lettura della documentazione.

È possibile definire due assi con lo stesso nome come gli assi "orizzontale" e "verticale" di defaule. Gli assi con lo stesso nome sono considerati come uno.

Penso che dovrebbe coprire la maggior parte delle cose di Input Manager.

+0

No, desidero davvero che Unity contassi l'asse per me, quindi l'ora in cui il pulsante era giù è proporzionale allo zoom. –

+0

Oh, per favore, potresti approfondire come definire un nuovo asse con il nome del pulsante? Non riesco a capire cosa inserire in "Pulsante positivo/negativo". –

+0

@ TomášZato: ho aggiunto qualche informazione in più sulle impostazioni di InputManager. – Bunny83