L'istanza ControllerManager gestisce il controllo del movimento simulato per il suo RootPart assegnato. Insieme a ControllerPartSensors, può essere utilizzato per costruire un controller di personaggio basato sulla fisica.
Configurazione del Reattore
ControllerManager richiede un BasePart per essere utilizzato come sua radice. Le forze di movimento e la sensing delle parti saranno su questa parte.
Raggruppa la parte come una Model istanza per l'organizzazione insieme agli altri componenti.
Aggiungi una ControllerManager istanza al modello. Se ControllerManager non appare inizialmente nel menu di inserimento dell'oggetto, deseleziona "Mostra solo oggetti raccomandati" nelle impostazioni di menu 2> Show only recommended objects" nella impostazione di menu5> .
Impostazioni sensore
Un ControllerPartSensor rileva parti con lo stesso codice che il Humanoid usa per rilevare pavimenti e scale.
Inserisci un ControllerPartSensor come figlio di RootPart e rinominalo in GroundSensor per una migliore identificazione del suo scopo. Quindi, nella finestra 2> Proprietà2>, imposta la sua proprietà
Inserisci un altro ControllerPartSensor come figlio di RootPart e rinominalo in ClimbSensor . Quindi, nella finestra 1> Proprietà1>, imposta la sua proprietà 4> Class.ControllerPartSensor.SearchDistance|SearchDistance</
Configurazione del controller
I controller come GroundController e ClimbController dicono alla parte gestita come interagire con il Mondo, lavorando insieme ai sensori che hai configurato in Impostazioni sensori.
Inserisci sia un GroundController che un ClimbController come figli del ControllerManager .
Seleziona la nuova GroundController istanza e quindi, nella finestra Proprietà, imposta la sua GroundOffset proprietà a un valore
Riferimenti di link
Per completare il setup del core, dovrai linkare varie proprietà dell'istanza ControllerManager a oggetti all'interno della principale Model .
Seleziona l'istanza ControllerManager.
Nella finestra Proprietà, fai clic su ciascuna delle seguenti proprietà e quindi, nel finestra Explorer, fai clic sulla relativa istanza per completare il Callegare.
- Collega la proprietà ActiveController alla GroundController esempio.
- Collega la proprietà RootPart alla parte che hai nomeato RootPart .
- Collega la proprietà ClimbSensor alla instanza ClimbSensor .
- Collega la proprietà GroundSensor alla instanza GroundSensor .
Testare
Con sensori e controller in Posto, e con iferimenti legati, puoi testare il controller in Studio.
Inizia un playtest usando la modalità Esegui ( F8 ) poiché non è necessario inserire il tuo personaggio avatar in questo scenario.
RootPart dovrebbe levitare sopra il terreno al valore GroundController.GroundOffset che hai impostato in Aggiungere controllori. Dovrebbe anche ruotare per allinearsi con il vettore 0> Class.ControllerManager.FacingDirection0>.
Sperimenta con diverse direzioni di movimento e di faccia cambiando i MovingDirection e Class.Controller
Sensori personalizzati
Le opzioni ControllerPartSensor.SensorMode di Floor e Ladder eseguono esattamente il codice del sensore 1> Class.Humanoid1>, consentendoti di utilizzarli per la compatibilità con l'archivio. Tuttavia, puoi anche personalizzare il modo
Passa il ControllerPartSensor.UpdateType da OnRead a Manuale .
- OnRead attiva le proprietà di output per aggiornare corrispondentemente al tuo SensorMode ogni volta che le leggi. Essenzialmente mette il sensore in una modalità "solo lettura" in cui tutto ciò che scrivi a queste proprietà viene sovrascritto dal suo comportamento di sensing interno.
- Manuale spegne il comportamento di sensing interno. Le proprietà di uscita sono gratuite per scrivere come vuoi e il SensorMode non fa nulla.
Crea uno script che esegue la tua logica di sensing e scrive le uscite nei tuoi proprietari di uscite del sensore. Di solito usi una query spaziale come WorldRoot:Raycast() o WorldRoot:Blockcast() che restituisce un RaycastResult . Il tuo script può quindi prendere le proprietà del risultato e impostarle sui pariivalenti del sensore:
Nota che dovrai gestire con quale frequenza le tue richieste vengono eseguite e aggiornate la loro esempiosensore.
Il ControllerManager continuerà ad utilizzare i sensori assegnati, prendendo i dati che gli passi.