Controles de Personagem

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

A instância ControllerManager gere simulação de controle de movimento para seu atribuído RootPart. Junto com ControllerPartSensors, ele pode ser usado para construir um Controlede personagem baseado em física.

Configuração do Núcleo

ControllerManager requer um BasePart para ser usado como sua raiz. Forças de movimento e sensores de peça estarão nesta parte.

  1. Escolha um Part ou MeshPart e nomeie-o RootPart .

  2. Agrupe a peça como uma instância Model para organização, juntamente com os outros componentes.

  3. Adicione uma instância de ControllerManager ao modelo. Se ControladorManager não aparecer inicialmente no menu de inserção de objetos, Desmarcar “Mostrar apenas objetos recomendados” nas configurações de inserção do menu.

    ControllerManager and RootPart inside model

Configuração de Sensor

Um ControllerPartSensor detecta peças com o mesmo código que o Humanoid usa para detectar pisos e escadas.

  1. Insira um ControllerPartSensor como filho de RootPart e renomeie-o para GroundSensor para identificar facilmente seu propósito. Então, na janela 1> Propriedades1>, configure seu propriedade 4> Class.Controller

    GroundSensor as child of RootPart
    GroundSensor properties
  2. Insira outro ControllerPartSensor como filho de RootPart e renomeie-o para ClimbSensor . Em seguida, na janela 1> Propriedades1>, configure sua propriedade 4> Class.ControllerPartSensor.SearchDistance|SearchDistance4> para

    ClimbSensor as child of RootPart
    ClimbSensor properties

Configuração do Controlador

Instâncias de controle, como GroundController e ClimbController, dizem à parte gerenciada como interagir com o mundo, trabalhando ao lado dos sensores que você configurou em Configuração de sensores.

  1. Insira tanto um GroundController quanto um ClimbController como filhos do ControllerManager.

    GroundController and ClimbController as children of ControllerManager
  2. Selecione a nova instância GroundController e, na janela Propriedades, configure sua propriedade GroundOffset para um valor que a peça gerenciada

    GroundController properties

Vinculando Referências

Para concluir o setup do núcleo, você'll precisar linkar várias propriedades da instância ControllerManager a objetos dentro do principal Model .

  1. Selecione a instância ControllerManager.

    ControllerManager selected in Explorer window
  2. Na janela Propriedades, clique em cada uma das propriedades a seguir e, em seguida, na janela Explorer, clique na instância respectiva para completar o víncular / conectar.

    1. Link the ActiveController property to the GroundController instância.
    2. Link the RootPart property to the part you named RootPart .
    3. Link the ClimbSensor property to the ClimbSensor instância.
    4. Link the GroundSensor property to the GroundSensor instância.
    ControllerManager properties linked to instances within overall model

Testando

Com sensores e controleadores no local, e com referências ligadas, você pode testar o controlador no Studio.

  1. Inicie um teste de jogo usando o modo Correr ( F8 ) pois você não precisa inserir seu personagem de avatar neste cenário.

    Rapid playtest options in Test tab of Studio
  2. RootPart deve levitar acima do solo na GroundController.GroundOffset valor que você definiu em Adicionando Controleurs. Ele também deve girar para alinhar com o veículo 0> Class.ControllerManager.FacingDirection 0>.

    Character levitating above ground at GroundOffset, facing in direction of FacingDirection vector
  3. Experimento com diferentes direções de movimento e direções de rosto alterando os vértices MovingDirection e Class

    ControllerManager properties for moving and facing direction
    ControladorGerenciador
    GroundController properties for acceleration, deceleration, and ground offset
    Controlador de Chão

Sensores Personalizados

As opções do ControllerPartSensor.SensorMode de Floor e Ladder são executadas com o código de sensor exato, permitindo que você use-os para a compatibilidade com versões anteriores. No entanto, você também pode personalizar como e quando as peças caminháveis e escaláveis são detectadas, final

  1. Alternar o ControllerPartSensor.UpdateType de OnRead para Manual .

    • OnRead gatilha as propriedades de saída para atualizar correspondendo ao seu SensorMode sempre que você as lê. Essencialmente, coloca o sensore em um modo "somente leitura" onde qualquer coisa que você escreva nessas propriedades se torna sobrescrito por seu comportamento de sensing interno.
    • Manual desliga o comportamento de sensing interno. As propriedades de saída são gratuitas para você escrever como você gosta e o SensorMode não faz nada.
  2. Crie um script que execute sua própria lógica de sensing e escreva os resultados em suas propriedades de saída de sensores. Normalmente, você usará uma consulta espacial, como WorldRoot:Raycast() ou WorldRoot:Blockcast(), que retorna um RaycastResult. Seu script então pode levar as propriedades do resultado e configurá-las nos equivalentes de sensores

    Nota que você precisará gerenciar com frequência quantas vezes suas consultas são executadas e atualizam sua instância de sensores.

  3. O ControllerManager continuará a usar os sensores que foram atribuídos, levará os dados que você passa para ele.