Kontrolery postaci

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Instancja ControllerManager zarządza symulowaną kontrolą ruchu dla swojego przypisanego RootPart .Wraz z ControllerPartSensors może być używany do budowy kontrolera postaci opartej na fizyce.

Ustawienie podstawowe

ControllerManager wymaga BasePart do użycia jako swojego korzenia. Siły ruchowe i wykrywanie części będą na tej części.

  1. Wybierz Part lub MeshPart i nazwij go Korzenną częścią .

  2. Grupuj część jako instancję Model dla organizacji wraz z innymi komponentami.

  3. Dodaj instancję ControllerManager do modelu.Jeśli ControllerManager nie pojawia się początkowo w menu wstawiania obiektów, odznacz "Pokaż tylko zalecane obiekty" w ustawieniach wstawiania menu .

    ControllerManager and RootPart inside a model.

Ustawienie czujnika

A ControllerPartSensor wykrywa części z tym samym kodem, który Humanoid używa do wykrywania podłóg i drabin.

  1. Wstaw ControllerPartSensor jako dziecko RootPart i zmień nazwę na GroundSensor dla łatwiejszej identyfikacji jej celu.Następnie, w oknie Właściwości, ustaw jego właściwość na 2, ale pozostaw jego jako podłogę.

    GroundSensor as child of RootPart
  2. Wstaw kolejny ControllerPartSensor jako dziecko RootPart i zmień nazwę na ClimbSensor .Następnie, w oknie Właściwości, ustaw jego właściwość na 1 i jego na drabinę.

    ClimbSensor as child of RootPart

Ustawienie kontrolera

Instancje kontrolera takie jak GroundController i ClimbController mówią zarządzanej części, jak interakować ze światem, pracując obok czujników, które skonfigurowałeś podczas instalacji czujnika.

  1. Wybierz nową instancję GroundController i następnie, w oknie Właściwości, ustaw jej właściwość GroundOffset na wartość, przy której część zarządzana powinna "wznosić się" nad ziemią.Ważne jest, aby ta wartość była mniejsza niż wartość SearchDistance dla czujnika gruntu, ponieważ ten czujnik zostanie dezaktywowany, jeśli straci zmysł ziemi i skutecznie zatrzyma swoje siły na części.

Odwołania do linków

Aby ukończyć podstawową konfigurację, musisz połączyć różne właściwości instancji ControllerManager z obiektami w głównej Model .

  1. Wybierz instancjaControllerManager.

    ControllerManager selected in Explorer window.
  2. W oknie Właściwości, kliknij każdą z poniższych właściwości, a następnie, ponownie w oknie Eksplorator, kliknij odpowiednią instancję, aby ukończyć łączyć.

    1. Połącz właściwość ActiveController z instancją GroundController .
    2. Połącz właściwość RootPart z częścią, którą nazwałeś RootPart .
    3. Połącz właściwość ClimbSensor z instancją Sensor wspinania się .
    4. Połącz właściwość GroundSensor z instancją Sensora gruntowego .
    ControllerManager properties linked to instances within overall model

Testuj

Z czujnikami i sterownikami w miejsce, a z odnośnikami powiązanymi możesz przetestować sterownik w Studio.

  1. Rozpocznij testowanie gry za pomocą trybu Uruchom ( F8 ), ponieważ nie musisz wstawiać swojej postaci awatara w tym scenariuszu.

    Rapid playtest options in Studio.
  2. Korzeń części powinien unosić się nad ziemią przy wartości GroundController.GroundOffset ustawionej w Dodawaniu kontrolerów.Powinien również się obrócić, aby zgodzić się z wektorem ControllerManager.FacingDirection.

    Character levitating above ground at GroundOffset, facing in direction of FacingDirection vector.
  3. Eksperymentuj z różnymi kierunkami ruchu i skierowaniem poprzez zmianę wektorów MovingDirection i FacingDirection z ControllerManager podczas wykonywania programu.Również eksperymentuj z różnymi właściwościami instancji GroundController, takimi jak AccelerationTime , DecelerationTime i GroundOffset.

    ControllerManager properties for moving and facing direction are highlighted.
    Menadżer kontrolera
    GroundController properties for acceleration, deceleration, and ground offset are highlighted.
    Kontroler naziemny

Własne czujniki

Opcje ControllerPartSensor.SensorMode i Floor oraz Ladder uruchamiają dokładny kod sensora Humanoid, umożliwiając ich użycie do odwrotnej kompatybilności.Jednak możesz również dostosować, w jaki sposób i kiedy wykrywane są chodzące i wspinające się części, ostatecznie zmieniając, kiedy zarządzana część chodzi/wspina się.

  1. Przełącz ControllerPartSensor.UpdateType z Czytania na Ręczne .

    • Po przeczytaniu uruchamia właściwości wyjścia, aby aktualizować odpowiednie do twojego każdorazowo, gdy je przeczytasz.Zasadniczo umieszcza czujnik w trybie "tylko odczytu", w którym wszystko, co piszesz do tych właściwości, zostaje zastąpione przez jego wewnętrzne zachowanie wykrywania.
    • Manual wyłącza wewnętrzne zachowanie detekcji.Właściwości wyjściowe są wolne, abyś pisał, jak chcesz, a SensorMode nic nie robi.
  2. Stwórz skrypt, który wykonuje własną logikę detekcji i zapisuje wyniki do właściwości wyjścia twojego sensora.Zazwyczaj użyjesz kwerendy przestrzennej, takiej jak WorldRoot:Raycast() lub WorldRoot:Blockcast(), która zwraca RaycastResult.Twój skrypt może wtedy wziąć właściwości wyniku i przypisać je odpowiednikom sensora:

    Zauważ, że musisz zarządzać częstotliwością uruchamiania zapytania i aktualizować instancję instancja.

  3. The ControllerManager będzie nadal używać czujników, które mu zostały przypisane, przyjmując dane, które mu przekazujesz.