Tastiera e mouse
Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 44 di 56.
Il sistema di input assegna un oggetto a ogni dispositivo. Keyboard.current è la tastiera e ogni tasto è un controllo con un nome: spaceKey, aKey, upArrowKey oppure Keyboard.current[Key.Space] per qualsiasi tasto, usando il suo valore Key. Mouse.current è il mouse, con leftButton, rightButton e position. isPressed di un controllo è true a ogni fotogramma in cui il controllo è tenuto premuto, proprio come accadeva con Input.GetKey. Questo sottomarino si immerge e riemerge con le frecce e accende il faro di ricerca mentre il pulsante del mouse è tenuto premuto:
using UnityEngine;
using UnityEngine.InputSystem;
public class Submarine : MonoBehaviour
{
public float diveSpeed = 2f;
public Light searchlight;
void Update()
{
Keyboard keyboard = Keyboard.current;
if (keyboard == null) return; // no keyboard plugged in
if (keyboard.downArrowKey.isPressed)
transform.position += Vector3.down * diveSpeed * Time.deltaTime;
if (keyboard.upArrowKey.isPressed)
transform.position += Vector3.up * diveSpeed * Time.deltaTime;
searchlight.enabled = Mouse.current != null && Mouse.current.leftButton.isPressed;
}
}current è il dispositivo usato più di recente ed è null quando non ce n'è nessuno: un telefono o una console potrebbero non avere una tastiera e i controlli null impediscono allo script di generare un errore in quel caso. La tastiera non ha assi, quindi la freccia giù e S sono due tasti distinti: per fare in modo che il sottomarino si immerga anche premendo S, verifica keyboard.downArrowKey.isPressed || keyboard.sKey.isPressed. Mouse.current.position.ReadValue() restituisce la posizione del puntatore come Vector2 in pixel dello schermo a partire dall'angolo in basso a sinistra, come Input.mousePosition.
Sfida
MedioFai volare la mongolfiera con Input System. Il suo script ha drift (2), rise (3), sink (1), groundY (2) e flame, la fiamma del bruciatore sotto la mongolfiera.
- Mentre tieni premuta la freccia destra o D, la mongolfiera si sposta verso destra (lungo +x) a
driftunità al secondo; mentre tieni premuta la freccia sinistra o A, si sposta verso sinistra. - Il bruciatore è acceso mentre tieni premuto Spazio o il pulsante sinistro del mouse. Mostra
flamesolo quando è acceso. - Con il bruciatore acceso, la mongolfiera sale a
riseunità al secondo. Quando è spento, scende asinkunità al secondo e non scende mai sottogroundY.
Usa Keyboard.current e Mouse.current. Questo progetto è configurato come un nuovo progetto Unity 6 (Active Input Handling: Input System Package), quindi qui la classe Input genera un'InvalidOperationException. Premi Play e fai volare la mongolfiera, poi premi Check.
Provalo tu
using UnityEngine;
using UnityEngine.InputSystem;
public class Balloon : MonoBehaviour
{
public float drift = 2f;
public float rise = 3f;
public float sink = 1f;
public float groundY = 2f;
public GameObject flame;
void Update()
{
// spostati con le frecce o con A e D, accendi la fiamma con Space o con il mouse
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Creare veri giochi
1Testo sullo schermo
Canvas e testoMostra il punteggioFormattare i numeriUn timer per il conto alla rovesciaRiepilogo: tachimetro4Scene e livelli
Caricare una scenaRiavviare il livelloLivello successivoMantenere i dati tra le sceneRiepilogo: selezione del livello10Progetto: Platform 3D
Il percorsoPiattaforme mobili2Pulsanti e schermate
Pulsanti e onClickLambdaCollegare nell'InspectorPannelli attivi e disattiviBarre della saluteRiepilogo: negozio degli upgrade5Salvare con PlayerPrefs
Salvare un numeroCaricare con un valore predefinitoPunteggio massimoSalvare le impostazioniRiepilogo: monete in banca8Controller del personaggio
CharacterController.MoveGravità manualeSaltoSpingere gli oggettiMuoviti dove guardiRiepilogo: doppio salto3Il gestore del gioco
Uno script gestisce il giocoIl SingletonStati di giocoSelezionare lo statoRiepilogo: gestore del round6Progetto: Corsa infinita
Tre corsieOstacoli in arrivo9Il nuovo sistema di input
Due sistemi di inputTastiera e mousePremuto in questo frameAzioni di inputRiepilogo: cambio di input