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.
Agrupe la parte como una instancia de Model para la organización junto con los demás componentes.
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ú.
Configuración de sensores
Un ControllerPartSensor detecta partes con el mismo código que usa el Humanoid para detectar pisos y escaleras.
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>
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
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 .
Insertar tanto un GroundController como un ClimbController como hijos del ControllerManager .
Seleccione la nueva instancia GroundController y luego, en la ventana Propiedades, configure su propiedad GroundOffset para un valor en el que la parte administr
Enlazando referencias
Para completar el conjunto básico, necesitará enlazar varias propiedades de la instancia ControllerManager a objetos dentro del principal Model .
Seleccione la instancia ControllerManager.
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.
- Enlace la propiedad ActiveController a la instancia GroundController .
- Enlace la propiedad RootPart a la parte que nombraste RootPart .
- Enlace la propiedad ClimbSensor a la instancia ClimbSensor .
- Enlace la propiedad GroundSensor a la instancia GroundSensor .
Testeo
Con sensores y controles en su lugar, y con referencias enlazadas en Studio, puede probar el controlador.
Inicia un playtest usando el modo Correr ( F8 ) ya que no necesitas insertar tu personaje de avatar en este escenario.
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> .
Experimenta con diferentes direcciones de movimiento y direcciones de cara cambiando los vértices MovingDirection y <
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ó
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.
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.
El ControllerManager seguirá utilizando los sensores asignados, tomando los datos que le pasa.