Panoramica
Questo script fornisce un sistema di controllo per il movimento e la gestione della telecamera in un contesto 3D. Supporta l'interazione tramite tastiera, mouse, touch screen e gamepad, offrendo un'esperienza di controllo versatile su diverse piattaforme. Esso mappa i tasti e i pulsanti per movimenti e rotazioni della telecamera, gestisce lo zoom con la rotella del mouse e assicura che la telecamera rimanga all'interno di confini predefiniti. Inoltre, calcola i confini del percorso basandosi sui dati dei file OBJ e integra tutti gli input per aggiornare la posizione della telecamera in modo fluido e interattivo.
Funzioni
addTouchListeners(key)
Descrizione: Aggiunge i listener per gli eventi touch ai pulsanti per dispositivi mobili o touchscreen.
Funzionamento: Recupera l'elemento del pulsante tramite il suo ID e associa gli eventi touchstart e touchend per aggiornare lo stato dei tasti corrispondenti.
Parametri:
key(string) - Il tasto/ID del pulsante corrispondente nell'oggettokeys.
calculateObjBoundaries(objData)
Descrizione: Calcola i confini dell'oggetto Road basandosi sui dati di un file OBJ.
Funzionamento: Analizza i dati del file OBJ linea per linea, estraendo le coordinate X e Z per determinare i valori minimi e massimi, aggiornando così i confini della strada su cui l'utente si muove.
Parametri:
objData(string) - Dati del file OBJ contenenti le posizioni dei vertici.
isWithinRoadBoundaries(position)
Descrizione: Verifica se la posizione della telecamera è all'interno dei confini dell'oggetto Road.
Funzionamento: Confronta la posizione attuale della telecamera con i confini dell'oggetto Road precedentemente calcolati e determina se è all'interno di questi limiti.
Parametri:
position(array) - La posizione della telecamera nel formato array.
Ritorna:
boolean- Restituiscetruese la posizione è all'interno dei confini,falsealtrimenti.
updateCameraPosition()
Descrizione: Aggiorna la posizione della telecamera basandosi sull'input dell'utente (tastiera, mouse, gamepad).
Funzionamento: Controlla gli input dell'utente tramite tastiera e gamepad per applicare movimenti e rotazioni alla telecamera. Verifica inoltre se la nuova posizione è all'interno dei confini del percorso prima di aggiornare la posizione effettiva della telecamera.
Gestione eventi
keydown
Descrizione: Evento che si attiva quando un tasto viene premuto sulla tastiera.
Funzionamento: Imposta il valore corrispondente in keys su true, avviando il movimento o la rotazione corrispondente della telecamera.
Parametri:
eventdi tipoKeyboardEvent.
keyup
Descrizione: Evento che si attiva quando un tasto viene rilasciato sulla tastiera.
Funzionamento: Imposta il valore corrispondente in keys su false, fermando il movimento o la rotazione corrispondente della telecamera.
Parametri:
eventdi tipoKeyboardEvent.
mousedown
Descrizione: Evento che si attiva quando un pulsante del mouse viene premuto.
Funzionamento: Attiva la modalità di rotazione della telecamera.
Parametri:
eventdi tipoMouseEvent.
mouseup
Descrizione: Evento che si attiva quando un pulsante del mouse viene rilasciato.
Funzionamento: Disattiva la modalità di rotazione della telecamera.
Parametri:
eventdi tipoMouseEvent.
mousemove
Descrizione: Evento che si attiva quando il mouse viene spostato.
Funzionamento: Aggiorna la rotazione della telecamera basandosi sul movimento del mouse.
Parametri:
eventdi tipoMouseEvent.
wheel
Descrizione: Evento che si attiva quando la rotellina del mouse viene utilizzata.
Funzionamento: Controlla lo zoom della telecamera. Se la telecamera si avvicina troppo o troppo poco, limita lo zoom per mantenerla entro i confini.
Parametri:
eventdi tipoWheelEvent.
touchstart
Descrizione: Evento che si attiva quando un'area designata dello schermo viene toccata.
Funzionamento: Simula la pressione di un tasto specifico, avviando il movimento corrispondente.
Parametri:
eventdi tipoTouchEvent.
touchend
Descrizione: Evento che si attiva quando un'area designata dello schermo viene rilasciata.
Funzionamento: Simula il rilascio di un tasto specifico, fermando il movimento corrispondente.
Parametri:
eventdi tipoTouchEvent.
Note
Gestione dei confini: Il codice è progettato per mantenere la telecamera entro i limiti della strada. Questo è particolarmente importante in ambienti virtuali in cui l'utente deve rimanere all'interno di un'area specifica.
Interazione con slider: Il codice prevede l'interazione con elementi UI, come slider, per evitare che queste interferiscano con i controlli della telecamera.
Input multipiattaforma: Lo script è progettato per funzionare su una varietà di dispositivi, supportando tastiere, mouse, touch screen e gamepad, rendendolo molto flessibile in contesti diversi.