Controles de personajes

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

La instancia ControllerManager gestiona el control de movimiento simulado para su asignado RootPart . Junto con ControllerPartSensors, se puede utilizar para construir un Control (ES_MX)de personaje basado en física.

Configuración del núcleo

ControllerManager requiere un BasePart para usar como su raíz. Las fuerzas de movimiento y el sensado de las partes estarán en esta parte.

  1. Elija un Part o MeshPart y llévelo a RaízParte .

  2. Agrupe la parte como una instancia de Model para la organización junto con los demás componentes.

  3. Añade una instancia de ControllerManager al aplicación de modelado. Si ControllerManager no aparece inicialmente en el menú de inserción de objetos, Deseleccionar "Mostrar solo objetos recomendados" en las configuraciones de inserción del menú.

    ControllerManager and RootPart inside model

Configuración de sensores

Un ControllerPartSensor detecta partes con el mismo código que usa el Humanoid para detectar pisos y escaleras.

  1. Inserta un ControllerPartSensor como hijo de RootPart y renombrarlo GroundSensor para identificar más fácilmente su propósito. Luego, en la ventana 1> Propiedades1>, establece su propiedad 4>

    GroundSensor as child of RootPart
    GroundSensor properties
  2. Inserta another ControllerPartSensor as a child of RootPart and rename it ClimbSensor . Then, in the 1> Properties1> window, set its 4> Class.ControllerPartorter.SearchDistance|SearchDistance4> property to 7>1

    ClimbSensor as child of RootPart
    ClimbSensor properties

Configuración del controlador

Instancias del controlador, como GroundController y ClimbController, le dicen a la parte gestionada cómo interactuar con el mundo, trabajando junto con los sensores que configuraste en Configuración de sensores .

  1. Insertar tanto un GroundController como un ClimbController como hijos del ControllerManager .

    GroundController and ClimbController as children of ControllerManager
  2. Seleccione la nueva instancia GroundController y luego, en la ventana Propiedades, configure su propiedad GroundOffset para un valor en el que la parte administr

    GroundController properties

Enlazando referencias

Para completar el conjunto básico, necesitará enlazar varias propiedades de la instancia ControllerManager a objetos dentro del principal Model .

  1. Seleccione la instancia ControllerManager.

    ControllerManager selected in Explorer window
  2. En la ventana Propiedades, haz clic en cada una de las siguientes propiedades y, una vez que estés en la ventana Explorador, haz clic en la instancia respectiva para completar el enlazar.

    1. Enlace la propiedad ActiveController a la instancia GroundController .
    2. Enlace la propiedad RootPart a la parte que nombraste RootPart .
    3. Enlace la propiedad ClimbSensor a la instancia ClimbSensor .
    4. Enlace la propiedad GroundSensor a la instancia GroundSensor .
    ControllerManager properties linked to instances within overall model

Testeo

Con sensores y controles en su lugar, y con referencias enlazadas en Studio, puede probar el controlador.

  1. Inicia un playtest usando el modo Correr ( F8 ) ya que no necesitas insertar tu personaje de avatar en este escenario.

    Rapid playtest options in Test tab of Studio
  2. RaízParte debería levitar por encima del suelo en el valor GroundController.GroundOffset que estableces en Añadir Contadores. También debería girar para alinearse con el vértice 0> Class.ControllerManager.FacingDirection 0> .

    Character levitating above ground at GroundOffset, facing in direction of FacingDirection vector
  3. Experimenta con diferentes direcciones de movimiento y direcciones de cara cambiando los vértices MovingDirection y <

    ControllerManager properties for moving and facing direction
    ControladorManager
    GroundController properties for acceleration, deceleration, and ground offset
    Controlador de suelo

Sensores personalizados

Las opciones de ControllerPartSensor.SensorMode y Floor y Ladder ejecutan el código de sensores de 2>Class.Humanoid2> , lo que te permite usarlos para la compatibilidad con versiones anteriores. Sin embargo, también puedes personalizar có

  1. Cambia el ControllerPartSensor.UpdateType de OnRead a Manual .

    • OnRead trata las propiedades de salida para actualizar las correspondientes a su SensorMode cada vez que las lees. Básicamente pone el sensor en un modo "solo de lectura" donde todo lo que escribes a estas propiedades se hace sobrescrito por su comportamiento de sensores internos.
    • Manual apaga el comportamiento de sensores internos. Las propiedades de salida son gratuitas para que escribas como quieras y el SensorMode no hace nada.
  2. Crea un script que realiza tu propia lógica de sensado y escribe los resultados en las propiedades de salida de tu sensor. Por lo general, usarás una consulta espacial como WorldRoot:Raycast() o WorldRoot:Blockcast() que devuelve un RaycastResult . Tu script entonces puede tomar la propiedad del resultado y establecerla en los equivalentes del sensor:

    Nota: necesitará administrar con qué frecuencia se ejecutan sus consultas y actualizar su instancia de sensor.

  3. El ControllerManager seguirá utilizando los sensores asignados, tomando los datos que le pasa.