Die ControllerManager Instanz verwaltet die simulierte Bewegungssteuerung für ihre zugewiesene RootPart .Zusammen mit ControllerPartSensors kann es verwendet werden, um einen physikbasierten Controllerzu erstellen.
Kern-Einrichtung
ControllerManager erfordert ein BasePart als seine Wurzel zu verwenden. Bewegungskräfte und Teileerkennung werden auf diesem Teil sein.
Gruppiere das Teil als Model.
Füge eine ControllerManager Instanz zum Modell hinzu.Wenn ControllerManager zunächst nicht im Objekt-Eingabemenü erscheint, deaktivieren Sie "Nur empfohlene Objekte anzeigen" in den Eingabeeinstellungen des Menüs.
Sensoraufbau
Ein ControllerPartSensor erkennt Teile mit demselben Code, den die Humanoid zum Erkennen von Böden und Leitern verwendet.
Füge ein ControllerPartSensor als Kind von RootPart ein und benenne es umbenennen GroundSensor für eine einfachere Identifizierung seines Zwecks.Dann, im Eigenschaften-Fenster, setze seine SearchDistance auf 2 , aber lass seine SensorMode als Boden übrig.
Füge einen weiteren ControllerPartSensor als Kind von RootPart ein und benenne ihn KletterSensor um.Dann, im Eigenschaften-Fenster, setze seine SearchDistance auf 1 und seine SensorMode auf Ladder .
Controller-Einrichtung
Controller-Instanzen wie GroundController und ClimbController sagen dem verwalteten Teil, wie es mit der Welt interagieren soll, und arbeiten neben den Sensoren, die du während der Sensor-Einrichtung konfiguriert hast.
Füge sowohl ein GroundController als auch ClimbController als Kinder des ControllerManager ein.
Wählen Sie die neue GroundController und dann, im Eigenschaften-Fenster, setzen Sie ihre GroundOffset auf einen Wert, bei dem das verwaltete Teil "auf der Erde schweben" sollte.Es ist wichtig, dass dieser Wert weniger als der Wert von ist, da dieser Sensor deaktiviert wird, wenn er den Sinn des Bodens verliert und seine Kräfte effektiv auf der Seite stoppt.
Verknüpfungsreferenzen
Um die Kernkonfiguration abzuschließen, musst du verschiedene Eigenschaften der ControllerManager Instanz mit Objekten innerhalb der HauptModel verknüpfen.
Wählen Sie die ControllerManager.
Klicke im Eigenschaften-Fenster auf jede der folgenden Eigenschaften und dann, zurück im Explorer-Fenster, auf die entsprechende Instanz, um den verlinkenzu vervollständigen.
- Verknüpfe die ActiveController mit der GroundController Instanz.
- Verknüpfe die RootPart Eigenschaft mit dem Teil, das du benannt hast RootPart .
- Verknüpfe die ClimbSensor Eigenschaft mit der KletterSensor Instanz.
- Verknüpfe die GroundSensor mit der GroundSensor Instanz.
Testen
Mit Sensoren und Kontrollern im Ortund mit verknüpften Referenzen kannst du den Controller in Studio testen.
Starte einen Spieltest mit dem Lauf -Modus (F8), da du deinen Avatar-Charakter in diesem Szenario nicht einfügen musst.
RootPart sollte über dem Boden schweben bei dem GroundController.GroundOffset Wert, den du in Kontroller hinzufügen festgelegt hast.Es sollte sich auch drehen, um sich mit dem ControllerManager.FacingDirection Vektorkraftzu vereinbaren.
Experimentiere mit verschiedenen Bewegungsrichtungen und Gesichtspunkten, indem du die MovingDirection - und FacingDirection -Vektoren des ControllerManager während der Laufzeit änderst.Experimentiere auch mit verschiedenen Eigenschaften der GroundController Instanz wie AccelerationTime , DecelerationTime und GroundOffset .
ControllerManager Bodensteuerung
Eigene Sensoren
Die ControllerPartSensor.SensorMode -Optionen von Floor und Ladder führen den genauen Humanoid Codesaus, sodass Sie sie für die Rückkompatibilität verwenden können.Sie können jedoch auch anpassen, wie und wann begehbare und kletterbare Teile erkannt werden, sich letztendlich ändern, wenn das verwaltete Teil geht/klettert.
Schalte die ControllerPartSensor.UpdateType von OnRead auf Manuell um.
- Lesen aktiviert die Ausgabe-Eigenschaften, um entsprechend Ihrer SensorMode jedes Mal zu aktualisieren, wenn Sie sie lesen.Es stellt den Sensor im Wesentlichen in einen "Nur-Lesemodus" um, in dem alles, was Sie auf diese Eigenschaften schreiben, durch sein internes Sensorverhalten überschrieben wird.
- Manuell schaltet das interne Sensorverhalten aus.Die Ausgabe-Eigenschaften sind für Sie kostenlos, um zu schreiben, wie Sie möchten, und die SensorMode tut nichts.
Erstellen Sie ein Skript, das Ihre eigene Sensorlogik ausführt und die Ausgänge in die Sensorausgabeproperties schreibt.In der Regel verwendest du eine räumliche Abfrage wie WorldRoot:Raycast() oder WorldRoot:Blockcast(), die eine RaycastResult zurückgibt.Dein Skript kann dann die Ergebnis-Eigenschaften annehmen und sie auf den Sensor-Äquivalenten festlegen:
Beachten Sie, dass Sie sicherstellen müssen, wie oft Ihre Abfragen ausgeführt werden und ihre Instanzaktualisieren.
Die ControllerManager wird weiterhin die Sensoren verwenden, die ihr zugewiesen wurden, und die Daten, die du ihr übermittelst.