Contrôleurs de caractères

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

L'instance ControllerManager gère le contrôle de mouvement simulé pour son contrôle attribué RootPart.Avec ControllerPartSensors, il peut être utilisé pour construire un manettede personnage basé sur la physique.

Configuration du noyau

ControllerManager nécessite un BasePart pour être utilisé comme racine. Les forces de mouvement et la détection des parties seront sur cette partie.

  1. Choisissez un Part ou MeshPart et nommez-le partie racine .

  2. Groupez la partie en tant qu'instance Model pour l'organisation avec les autres composants.

  3. Ajoutez une instance ControllerManager à la modèlisation.Si Gestionnaire de contrôleur n'apparaît pas initialement dans le menu d'insertion d'objets, désélectionnez "Afficher uniquement les objets recommandés" dans les paramètres d'insertion du menu .

    ControllerManager and RootPart inside a model.

Configuration du capteur

Un ControllerPartSensor détecte des parties avec le même code que Humanoid utilise pour détecter les planchers et les échelles.

  1. Insérez un ControllerPartSensor comme enfant de RootPart et renommez-le GroundSensor pour une identification plus facile de son but.Ensuite, dans la fenêtre propriétés , définissez sa propriété à 2 mais laissez son comme étage .

    GroundSensor as child of RootPart
  2. Insérez un autre ControllerPartSensor comme enfant de RootPart et renommez-le capteur d'escalade .Ensuite, dans la fenêtre propriétés , définissez sa propriété à 1 et sa propriété à échelle .

    ClimbSensor as child of RootPart

Configuration du contrôleur

Les instances de contrôleur comme GroundController et ClimbController disent à la partie gérée comment interagir avec le monde, en travaillant aux côtés des capteurs que vous avez configurés pendant le montage des capteurs.

  1. Insérez à la fois un GroundController et un ClimbController comme enfants du ControllerManager .

    GroundController and ClimbController as children of ControllerManager.
  2. Sélectionnez la nouvelle instance GroundController et ensuite, dans la fenêtre Propriétés, définissez sa propriété GroundOffset à une valeur à laquelle la partie gérée devrait « flotter » au-dessus du sol.Il est important que cette valeur soit inférieure à la valeur de SearchDistance pour le capteur au sol, car ce capteur sera désactivé s'il perd le sens du sol et arrêtera efficacement ses forces sur la partie.

Références de lien

Pour terminer la configuration du noyau, vous devrez lier différentes propriétés de l'instance ControllerManager à des objets dans le principal Model.

  1. Sélectionnez l'instance ControllerManager.

    ControllerManager selected in Explorer window.
  2. Dans la fenêtre propriétés, cliquez sur chacune des propriétés suivantes, puis, dans la fenêtre explorateur, cliquez sur l'instance respective pour terminer le lier.

    1. Liaison de la propriété ActiveController à l'instance Contrôleur du sol .
    2. Liaison de la propriété RootPart à la partie que vous avez nommée RootPart .
    3. Liaison de la propriété ClimbSensor à l'instance Sensor d'escalade .
    4. Liaison de la propriété GroundSensor à l'instance capteur au sol .
    ControllerManager properties linked to instances within overall model

Testez

Avec capteurs et contrôleurs en emplacement, et avec références liées, vous pouvez tester le contrôleur dans Studio.

  1. Lancez un test de jeu en utilisant le mode Exécution ( F8 ) puisque vous n'avez pas besoin d'insérer votre personnage d'avatar dans ce scénario.

    Rapid playtest options in Studio.
  2. La partie racine doit se lever au-dessus du sol à la valeur GroundController.GroundOffset que vous avez définie dans Ajout de contrôleurs.Il devrait également tourner pour s'aligner sur le force vectorielleControllerManager.FacingDirection.

    Character levitating above ground at GroundOffset, facing in direction of FacingDirection vector.
  3. Expérimentez différentes directions de mouvement et de face en modifiant les vecteurs MovingDirection et FacingDirection du ControllerManager pendant l'exécution.Expérimentez également avec différentes propriétés de l'instance , , et .

    ControllerManager properties for moving and facing direction are highlighted.
    Gestionnaire de contrôleur
    GroundController properties for acceleration, deceleration, and ground offset are highlighted.
    Contrôleur de terrain

Capteurs personnalisés

Les options ControllerPartSensor.SensorMode et Floor de Ladder exécutent le code de capteur exact Humanoid , vous permettant de les utiliser pour la compatibilité en arrière.Cependant, vous pouvez également personnaliser la façon et le moment où les parties marchables et escaladables sont détectées, ce qui change en fin de compte lorsque la partie gérée marche/monte.

  1. Passez le ControllerPartSensor.UpdateType de Lecture automatique à Manuel .

    • En lecture déclenche les propriétés de sortie pour mettre à jour correspondant à votre SensorMode à chaque fois que vous les lisez.Il met essentiellement le capteur dans un mode « lecture seule » où tout ce que vous écrivez sur ces propriétés est remplacé par son comportement de détection interne.
    • Manuel désactive le comportement de détection interne.Les propriétés de sortie sont libres pour vous d'écrire comme vous le souhaitez et le SensorMode ne fait rien.
  2. Créer un script qui exécute votre propre logique de détection et écrit les sorties dans les propriétés de sortie de votre capteur.Typiquement, vous utiliserez une requête spatiale telle que WorldRoot:Raycast() ou WorldRoot:Blockcast() qui renvoie un RaycastResult .Votre script peut ensuite prendre les propriétés de résultat et les définir sur les équivalents de capteur :

    Notez que vous devrez gérer la fréquence à laquelle vos requêtes s'exécutent et mettre à jour leur instance de capteur.

  3. La ControllerManager utilisera toujours les capteurs qui lui ont été attribués, en prenant les données que vous lui transmettez.