Controllori di personaggio

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

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.

  1. Scegli un Part o MeshPart e nametelo RootPart .

  2. Raggruppa la parte come una Model istanza per l'organizzazione insieme agli altri componenti.

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

    ControllerManager and RootPart inside model

Impostazioni sensore

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

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

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

    ClimbSensor as child of RootPart
    ClimbSensor properties

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.

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

    GroundController and ClimbController as children of ControllerManager
  2. Seleziona la nuova GroundController istanza e quindi, nella finestra Proprietà, imposta la sua GroundOffset proprietà a un valore

    GroundController properties

Per completare il setup del core, dovrai linkare varie proprietà dell'istanza ControllerManager a oggetti all'interno della principale Model .

  1. Seleziona l'istanza ControllerManager.

    ControllerManager selected in Explorer window
  2. Nella finestra Proprietà, fai clic su ciascuna delle seguenti proprietà e quindi, nel finestra Explorer, fai clic sulla relativa istanza per completare il Callegare.

    1. Collega la proprietà ActiveController alla GroundController esempio.
    2. Collega la proprietà RootPart alla parte che hai nomeato RootPart .
    3. Collega la proprietà ClimbSensor alla instanza ClimbSensor .
    4. Collega la proprietà GroundSensor alla instanza GroundSensor .
    ControllerManager properties linked to instances within overall model

Testare

Con sensori e controller in Posto, e con iferimenti legati, puoi testare il controller in Studio.

  1. Inizia un playtest usando la modalità Esegui ( F8 ) poiché non è necessario inserire il tuo personaggio avatar in questo scenario.

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

    Character levitating above ground at GroundOffset, facing in direction of FacingDirection vector
  3. Sperimenta con diverse direzioni di movimento e di faccia cambiando i MovingDirection e Class.Controller

    ControllerManager properties for moving and facing direction
    ControllerManager
    GroundController properties for acceleration, deceleration, and ground offset
    GroundController

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

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

  3. Il ControllerManager continuerà ad utilizzare i sensori assegnati, prendendo i dati che gli passi.