Zarządzanie postaciami

*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 sterowaniem ruchu symulowanym dla swojego przypisanego RootPart . Wraz z ControllerPartSensors można go używać do budowania sterowania ruchu opartego na fizyce.

Ustawienia rdzenia

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

  1. Wybierz Part lub MeshPart i nazwij go RootPart .

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

  3. Dodaj instancję ControllerManager do modelu. Jeśli ControllerManager nie pojawia się najpierw w menu wstawiania obiektów, Odznacz “Pokaż tylko zalecane obiekty” w menu w wstawieniu ustawień 2>。2>

    ControllerManager and RootPart inside model

Ustawienia czujników

A ControllerPartSensor wykrywa części z tego samego kodu, który Humanoid używa do wykrywania podłogi i schodów.

  1. Utwórz ControllerPartSensor jako dziecko RootPart i zmień jego nazwę na GroundSensor dla łatwiejszego zidentyfikowania jego celu. Następnie w oknie 1> Właściwości1>

    GroundSensor as child of RootPart
    GroundSensor properties
  2. Utwórz kolejny ControllerPartSensor jako dziecko RootPart i zmień jego nazwę ClimbSensor . Następnie, w oknie 1> Właściwości1>, ustaw jego 4> Class.ControllerPartSensor.SearchDistance|SearchDistance

    ClimbSensor as child of RootPart
    ClimbSensor properties

Ustawienia kontrolera

Instancje kontrolera, takie jak GroundController i ClimbController, mówią części zarządzającej, jak interagować z światem, pracując wraz z czujnikami, które skonfigurowałeś w SensorSetup .

  1. Wprowadź obie GroundController i ClimbController jako dzieci ControllerManager.

    GroundController and ClimbController as children of ControllerManager
  2. Wybierz nową instancję GroundController i następnie w oknie Właściwości ustaw jego Class.GroundController.GroundOffset|GroundOffset ”wartość na wartość, do które

    GroundController properties

Łączenie odniesień

Aby ukończyć ustawienia rdzenia, będziesz musiał powiązać różne właściwości instancji ControllerManager z obiektami w głównym Model .

  1. Wybierz instancję ControllerManager.

    ControllerManager selected in Explorer window
  2. W Oknie Proprietści, kliknij każdą z następujących cech, a następnie, w Oknie Explorer, 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ą o nazwie RootPart .
    3. Połącz właściwość ClimbSensor z instancją ClimbSensor .
    4. Połącz właściwość GroundSensor z instancją GroundSensor .
    ControllerManager properties linked to instances within overall model

Testowanie

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

  1. Rozpocznij testowanie używając trybu Biegnij ( F8 ) ponieważ nie musisz wstawiać swojego postaci awatara w tym scenariuszu.

    Rapid playtest options in Test tab of Studio
  2. RootPart powinien znajdować się nad ziemią w wartości GroundController.GroundOffset , którą ustawiłeś w Dodawanie sterowników. Powinien również obrócić się, aby zbieć się z wektorem 0> Class.ControllerManager.FacingDirection0>.

    Character levitating above ground at GroundOffset, facing in direction of FacingDirection vector
  3. Eksperymentuj z różnymi kierunkami i kierunkami obrotu, zmieniając MovingDirection

    ControllerManager properties for moving and facing direction
    KontrolerManager
    GroundController properties for acceleration, deceleration, and ground offset
    Kontroler Podłogowy

Niestandardowe czujniki

Opcje ControllerPartSensor.SensorMode z Floor i Ladder wykonują dokładny kod czujnika 2>Class.Humanoid2>, pozwalając używać go do kompatybilności z przeszłością. Możesz jednak również dostosować, jak i kied

  1. Przełącz ControllerPartSensor.UpdateType z OnRead na Manual .

    • OnRead aktywuje właściwości wyjścia, aby aktualizować odpowiadające swojemu SensorMode każdym razem, gdy je czytasz. W zasadzie umieszcza czujnik w trybie "tylko czytania", w którym wszystko, co piszesz do tych właściwości, zostaje ponadpisane przez jego zachowanie wewnętrznego czucia.
    • Ręczny wyłącza zachowanie sensingu wewnętrznego. Wyjściowe właściwości są dla Ciebie darmowe, aby napisać, jak chcesz, a SensorMode nie robi nic.
  2. Utwórz skrypt, który wykonuje swoją własną logikę czucia i zapisuje wyniki na swojej matrycy wyników. Zwykle używasz wizualnej kwerty, takiej jak WorldRoot:Raycast() lub WorldRoot:Blockcast(), która zwraca wynik RaycastResult. Twoój skrypt może wtedy wziąć wynik na parametrach i ustawić go

    Uwaga, że będziesz musiał zarządzać częstotliwością wykonania zapytania i aktualizacją ich instancji instancja.

  3. Class.ControllerManager będzie nadal używać czujników, do których została przypisana, przyjmując dane, które przesyłasz do niej.