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 personajes basado en físicas.
Configuración del núcleo
ControllerManager requiere un BasePart para usar como raíz. Las fuerzas de movimiento y la detección de partes estarán en esta parte.
Grupe la parte como una instancia Model para la organización junto con los otros componentes.
Añade una instancia ControllerManager a la aplicación de modelado.Si ControllerManager no aparece inicialmente en el menú de inserción de objetos, desmarque "Mostrar solo objetos recomendados" en las configuraciones de inserción del menú .
Configuración del sensor
Un ControllerPartSensor detecta partes con el mismo código que el Humanoid usa para detectar pisos y escaleras.
Inserta un ControllerPartSensor como hijo de RootPart y renombralo Sensor de suelo para una identificación más fácil de su propósito.Luego, en la ventana Propiedades, establezca su propiedad SearchDistance en 2 pero deje su SensorMode como suelo .
Inserta otro ControllerPartSensor como hijo de RootPart y renombralo Sensor de escalada .Luego, en la ventana Propiedades, establece su propiedad SearchDistance a 1 y su propiedad SensorMode a Escalera .
Configuración del controlador
Las instancias de controlador como GroundController y ClimbController le dicen a la parte gestionada cómo interactuar con el mundo, trabajando junto con los sensores que configuró durante la instalación del sensor.
Inserta tanto un GroundController como un ClimbController como hijos del ControllerManager .
Seleccione la nueva instancia GroundController y luego, en la ventana Propiedades, establezca su propiedad GroundOffset a un valor en el que la parte administrada debería "levitar" por encima del suelo.Es importante que este valor sea menos que el valor de SearchDistance para el Sensor de suelo, ya que ese sensor se desactivará si pierde el sentido del suelo y efectivamente detendrá sus fuerzas en la parte.
Referencias de enlace
Para completar la configuración del núcleo, necesitarás vincular varias propiedades de la instancia ControllerManager a objetos dentro del principal Model.
Seleccione la instancia ControllerManager.
En la ventana Propiedades, haga clic en cada una de las siguientes propiedades y luego, de vuelta en la ventana Explorador, haga clic en la instancia respectiva para completar el enlazar.
- Enlaza la propiedad ActiveController a la instancia Controlador de suelo .
- Enlaza la propiedad RootPart a la parte que llamaste RootPart .
- Enlaza la propiedad ClimbSensor a la instancia Sensor de escalada .
- Enlaza la propiedad GroundSensor a la instancia Sensor de suelo .
Prueba
Con sensores y controladores en su lugar, y con referencias vinculadas, puedes probar el controlador en Studio.
Inicia una prueba de juego usando el modo Ejecutar ( F8 ), ya que no necesitas insertar tu personaje de avatar en este escenario.
Parte raíz debe levitar por encima del suelo en el valor GroundController.GroundOffset que estableciste en Añadir controladores.También debe rotar para alinearse con el fuerza vectorialControllerManager.FacingDirection.
Experimenta con diferentes direcciones de movimiento y enfrentamiento cambiando los vectores MovingDirection y FacingDirection de la ControllerManager durante el tiempo de ejecución.También experimenta con diferentes propiedades de la instancia , , y .
Gerente de controlador Controlador de suelo
Sensoras personalizadas
Las opciones ControllerPartSensor.SensorMode de Floor y Ladder ejecutan el código del sensor exacto Humanoid, permitiéndote usarlos para la compatibilidad hacia atrás.Sin embargo, también puedes personalizar cómo y cuándo se detectan partes caminables y escalables, cambiando finalmente cuando la parte gestionada camina/escala.
Cambia el ControllerPartSensor.UpdateType de Leer a Manual .
- Al leer activa las propiedades de salida para actualizar correspondientes a tu cada vez que las leas.Esencialmente pone al sensor en un modo "solo de lectura" en el que cualquier cosa que escriba en estas propiedades se reemplaza por su comportamiento de detección interna.
- Manual desactiva el comportamiento de detección interna.Las propiedades de salida son gratuitas para que escribas como quieras y el SensorMode no hace nada.
Crea un script que realice tu propia lógica de detección y escriba las salidas a las propiedades de salida de tu sensor.Típicamente usarás una consulta espacial como WorldRoot:Raycast() o WorldRoot:Blockcast() que devuelve un RaycastResult .Su script puede entonces tomar las propiedades de resultado y establecerlas en los equivalentes de sensores:
Tenga en cuenta que tendrá que administrar con qué frecuencia se ejecutan sus consultas y actualizar su instancia de sensor.
El ControllerManager continuará usando los sensores que se le han asignado, tomando los datos que le pasas.