Controller di caratteri

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

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.

  1. Scegli un Part o MeshPart e nominalo RootPart .

  2. Gruppa la parte come un'istanza Model per l'organizzazione insieme agli altri componenti.

  3. 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 .

    ControllerManager and RootPart inside a model.

Configurazione sensore

Un ControllerPartSensor rileva parti con lo stesso codice che Humanoid utilizza per rilevare pavimenti e scale.

  1. 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 .

    GroundSensor as child of RootPart
  2. 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 .

    ClimbSensor as child of RootPart

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 .

  1. Inserisci sia un GroundController e un ClimbController come figli del ControllerManager .

    GroundController and ClimbController as children of ControllerManager.
  2. 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.

Per completare l'installazione del core, dovrai collegare diverse proprietà dell'istanza ControllerManager a oggetti all'interno del main Model.

  1. Seleziona l'esempioControllerManager .

    ControllerManager selected in Explorer window.
  2. Nella finestra Proprietà, clicca ciascuna delle seguenti proprietà e quindi, tornando nella finestra Explorer, clicca l'istanza corrispondente per completare il Callegare.

    1. Collega la proprietà ActiveController a l'esempio GroundController .
    2. Collega la proprietà RootPart a quella parte che hai nominato RootPart .
    3. Collega la proprietà ClimbSensor a l'esempio Sensore di salita .
    4. Collega la proprietà GroundSensor a l'istanza Sensore di Terreno .
    ControllerManager properties linked to instances within overall model

Prova

Con sensori e controller in Posto, e con riferimenti collegati , puoi testare il controller in Studio.

  1. Avvia un playtest usando la modalità Esegui ( > ) poiché non è necessario inserire il personaggio dell'avatar in questo scenario.

    Rapid playtest options in Studio.
  2. 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 .

    Character levitating above ground at GroundOffset, facing in direction of FacingDirection vector.
  3. 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 properties for moving and facing direction are highlighted.
    ControllerManager
    GroundController properties for acceleration, deceleration, and ground offset are highlighted.
    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.

  1. 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.
  2. 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.

  3. Il ControllerManager continuerà ad utilizzare i sensori a cui è stato assegnato, prendendo i dati che gli passi.