Controles de personagens

*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 gerencia o controle de movimento simulado para seu controle designado RootPart.Junto com ControllerPartSensors, pode ser usado para construir um Controlede personagens baseado em física.

Configuração do núcleo

ControllerManager requer um BasePart para usar como sua raiz. As forças de movimento e a detecção de partes estarão nesta parte.

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

  2. Grupe a peça como uma instância Model para organização junto com os outros componentes.

  3. Adicione uma instância ControllerManager ao modelo.Se Gerente de Controlador não aparecer inicialmente no menu de inserção de objetos, desmarque "Mostrar apenas objetos recomendados" nas configurações de inserção do menu .

    ControllerManager and RootPart inside a model.

Configuração do 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 RaizParte e renomeie-o Sensor de Terreno para uma identificação mais fácil de seu propósito.Então, na janela Propriedades, defina sua propriedade SearchDistance para 2 mas deixe sua propriedade SensorMode como Chão .

    GroundSensor as child of RootPart
  2. Insira outro ControllerPartSensor como filho de RaizPart e renomeie-o Sensor de Escalada .Então, na janela Propriedades, defina sua propriedade SearchDistance para 1 e sua propriedade SensorMode para Escada .

    ClimbSensor as child of RootPart

Configuração do controlador

Instâncias de controlador como GroundController e ClimbController dizem à parte gerenciada como interagir com o mundo, trabalhando ao lado dos sensores que você configurou durante o setup de sensores.

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

    GroundController and ClimbController as children of ControllerManager.
  2. Selecione a nova instância GroundController e, em seguida, na janela Propriedades, defina sua propriedade GroundOffset para um valor em que a parte gerenciada deve "levitar" acima do solo.É importante que esse valor seja menor que o valor de SearchDistance para o Sensor de Terreno, pois esse sensor será desativado se perder o sentido do solo e parar efetivamente suas forças na parte.

Para completar a configuração principal, você precisará vincular várias propriedades da instância ControllerManager ao objeto dentro do principal Model.

  1. Selecione a instância ControllerManager .

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

    1. Vincule a propriedade ActiveController à instância Controlador de Terreno .
    2. Vincule a propriedade RootPart à parte que você nomeou Raiz de Parte .
    3. Vincule a propriedade ClimbSensor à instância Sensor de Escalada .
    4. Vincule a propriedade GroundSensor à instância Sensor de Terreno .
    ControllerManager properties linked to instances within overall model

Teste

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

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

    Rapid playtest options in Studio.
  2. RaizParte deve flutuar acima do solo no valor GroundController.GroundOffset que você definiu em Adicionando Controladores.Também deve girar para se alinhar com o vetor ControllerManager.FacingDirection.

    Character levitating above ground at GroundOffset, facing in direction of FacingDirection vector.
  3. Experimente diferentes movimentos e direções de enfrentamento alterando os vetores MovingDirection e FacingDirection do ControllerManager durante a tempo de execução.Também experimente com diferentes propriedades da instância , e .

    ControllerManager properties for moving and facing direction are highlighted.
    Gerente de Controlador
    GroundController properties for acceleration, deceleration, and ground offset are highlighted.
    Controlador de Terreno

Sensores personalizados

As opções ControllerPartSensor.SensorMode de Floor e Ladder executam o código de sensor exato Humanoid, permitindo que você os use para compatibilidade com versões anteriores.No entanto, você também pode personalizar como e quando peças camináveis e escaláveis são detectadas, mudando, em última análise, quando a peça gerenciada caminha/escala.

  1. Troque o ControllerPartSensor.UpdateType de Leitura automática para Manual .

    • Ao ler aciona as propriedades de saída para atualizar correspondendo à sua SensorMode.Ele essencialmente coloca o sensor em um modo "apenas de leitura" onde qualquer coisa que você escreva nessas propriedades é substituída pelo seu comportamento de detecção interna.
    • Manual desliga o comportamento de detecção interna.As propriedades de saída são gratuitas para você escrever como quiser e o SensorMode não faz nada.
  2. Crie um script que execute a lógica de sensamento própria e escreva os resultados nas propriedades de saída do seu sensor.Normalmente, você usará uma consulta espacial como WorldRoot:Raycast() ou WorldRoot:Blockcast() que retorna um RaycastResult.Seu script pode então tomar as propriedades de resultado e definir elas nos equivalentes de sensores:

    Observe que você precisará gerenciar com que frequência suas consultas são executadas e atualizar sua instância de sensor.

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