L'istanza ControllerManager gestisce il controllo della mobilità simulata per il suo assegnato RootPart .Insieme a ControllerPartSensors , può essere utilizzato per costruire un controller di personaggi basato sulla fisica.
Configurazione del core
ControllerManager richiede un BasePart per essere utilizzato come radice. Le forze di movimento e la sensibilità delle parti saranno su questa parte.
Gruppa la parte come un'istanza Model per l'organizzazione insieme agli altri componenti.
Aggiungi un'istanza ControllerManager al modello.Se ControllerManager non appare inizialmente nel menu di inserimento dell'oggetto, deseleziona "Mostra solo oggetti raccomandati" nelle impostazioni di inserimento del menu .
Configurazione sensore
Un ControllerPartSensor rileva parti con lo stesso codice che Humanoid utilizza per rilevare pavimenti e scale.
Inserisci un ControllerPartSensor come figlio di RootPart e rinominalo Sensore di Terreno per una più facile identificazione del suo scopo.Quindi, nella finestra Proprietà, imposta la sua proprietà SearchDistance a 2 ma lascia la sua SensorMode come Piano .
Inserisci un altro ControllerPartSensor come figlio di RootPart e rinominalo Sensore di salita .Quindi, nella finestra Proprietà, imposta la sua proprietà SearchDistance a 1 e la sua proprietà SensorMode a Scala .
Configurazione del controller
Le istanze controller come GroundController e ClimbController dicono alla parte gestita come interagire con il Mondo, lavorando a fianco dei sensori che hai configurato durante il setup sensore .
Inserisci sia un GroundController e un ClimbController come figli del ControllerManager .
Seleziona la nuova istanza GroundController e poi, nella finestra Proprietà, imposta la sua proprietà GroundOffset a un valore al quale la parte gestita dovrebbe "levitare" sopra il terreno.È importante che questo valore sia inferiore al valore di SearchDistance per il Sensore di Terreno, poiché quel sensore si disattiverà se perderà il senso del terreno e interromperà effettivamente le sue forze sulla parte.
Riferimenti di link
Per completare l'installazione del core, dovrai collegare diverse proprietà dell'istanza ControllerManager a oggetti all'interno del main Model.
Seleziona l'esempioControllerManager .
Nella finestra Proprietà, clicca ciascuna delle seguenti proprietà e quindi, tornando nella finestra Explorer, clicca l'istanza corrispondente per completare il Callegare.
- Collega la proprietà ActiveController a l'esempio GroundController .
- Collega la proprietà RootPart a quella parte che hai nominato RootPart .
- Collega la proprietà ClimbSensor a l'esempio Sensore di salita .
- Collega la proprietà GroundSensor a l'istanza Sensore di Terreno .
Prova
Con sensori e controller in Posto, e con riferimenti collegati , puoi testare il controller in Studio.
Avvia un playtest usando la modalità Esegui ( > ) poiché non è necessario inserire il personaggio dell'avatar in questo scenario.
RootPart dovrebbe levitare sopra il terreno al valore GroundController.GroundOffset che hai impostato in Aggiunta di controller.Dovrebbe anche ruotare per allinearsi con il vettorialeControllerManager.FacingDirection .
Sperimenta con diverse direzioni di movimento e faccia cambiando i veicoli MovingDirection e FacingDirection del ControllerManager durante l'esecuzione.Prova anche con diverse proprietà dell'istanza , e .
ControllerManager Controller di Terra
Sensori personalizzati
Le opzioni ControllerPartSensor.SensorMode e Floor di Ladder eseguono il codice sensore esatto Humanoid , consentendoti di utilizzarli per la compatibilità retrospettiva.Tuttavia, puoi anche personalizzare il modo e il momento in cui vengono rilevate le parti percorribili e scalabili, cambiando infine quando la parte gestita cammina/sali.
Passa il ControllerPartSensor.UpdateType da Leggi a Manuale .
- OnRead attiva le proprietà di output per aggiornare corrispondenti alle tue SensorMode ogni volta che leggi.Essenzialmente mette il sensore in una modalità "read-only" in cui tutto ciò che scrivi a queste proprietà viene sovrascritto dal suo comportamento sensibile interno.
- Manuale disattiva il comportamento di sensore interno.Le proprietà di output sono libere per te di scrivere come vuoi e il SensorMode non fa nulla.
Crea uno script che esegue la tua logica di sensing e scrive le uscite alle proprietà di uscita del tuo sensore.Di solito utilizzerai una query spaziale come WorldRoot:Raycast() o WorldRoot:Blockcast() che restituisce un RaycastResult .Il tuo script può quindi prendere le proprietà di risultato e impostarle sugli equivalenti sensore:
Nota che dovrai gestire la frequenza con cui eseguire le tue query e aggiornare l'istanza del sensore.
Il ControllerManager continuerà ad utilizzare i sensori a cui è stato assegnato, prendendo i dati che gli passi.