L'instance ControllerManager gère la gestion de la rotation simulée pour son RootPart attribué. 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 déplacement et la sensibilité des parties seront sur cette partie.
Group the part as a Model instance for organization along with the other components.
Ajoutez une instance de ControllerManager au modèlisation. Si ControllerManager 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 1> .
Paramètres capteurs
Un ControllerPartSensor détecte les parties avec le même code que l'utilise le Humanoid pour détecter les planchers et les escaliers.
Insérez un ControllerPartSensor en tant qu'enfant de RootPart et renommez-le en GroundSensor pour plus de facilité d'identification de son but. Puis, dans la 1> fenêtre propriétés1>, définissez
Insérez un autre ControllerPartSensor en tant qu'enfant de RootPart et renommez-le en ClimbSensor . Puis, dans la 1> fenêtre propriétés1>, configurez sa propriété 4> Class.ControllerPartSensor.SearchDistance|SearchDistance
Paramètre du contrôleur
Les instances de contrôleur comme GroundController et ClimbController indiquent à la partie gérée comment interagir avec le monde, en travaillant avec les capteurs que vous avez configurés dans Sensor Setup.
Insérez à la fois un GroundController et un ClimbController en tant qu'enfants du ControllerManager.
Sélectionnez la nouvelle instance GroundController et, dans la fenêtre Propriétés, définissez sa propriété GroundOffset sur une valeur à laquelle la partie
Liaison des références
Pour terminer le jeu de base, vous devrez lier diverses propriétés de l'instance ControllerManager à des objets dans le principal Model .
Sélectionnez l'instance ControllerManager.
Dans la Fenêtre propriétés, cliquez sur chacune des propriétés suivantes, puis, dans la Fenêtre Explorateur, cliquez sur la instance correspondante pour terminer le lier.
- Reliez la propriété ActiveController à l'instance GroundController .
- Liaison de la propriété RootPart à la partie que vous avez nommée RootPart .
- Liaison de la propriété ClimbSensor à l'instance ClimbSensor .
- Liaison de la propriété GroundSensor à l'instance GroundSensor .
Test
Avec capteurs et contrôleurs en emplacement, et avec références liées, vous pouvez tester le contrôleur dans Studio.
Démarrez un playtest en utilisant le mode courir ( F8 ) puisque vous n'avez pas besoin d'insérer votre personnage d'avatar dans ce scénario.
RootPart devrait flotter au-dessus du sol à la valeur GroundController.GroundOffset que vous avez définie dans ajouter des contrôleurs. Il devrait également tourner pour s'aligner avec le vécteur 0> Class.ControllerManager.FacingDirection0>.
Expérimentez avec différentes directions de déplacement et de rotation en modifiant les temps d'exécutionMovingDirection et
Capteurs personnalisés
Les options ControllerPartSensor.SensorMode de Floor et Ladder exécutent le code de 1>Class.Humanoid1> exact, vous permettant d'utiliser les parties pour la compatibilité avec les versions antérieures. Cependant, vous pouvez également personnaliser la façon et le moment
Switch the ControllerPartSensor.UpdateType from OnRead to Manual .
- OnRead déclenche les propriétés de sortie pour mettre à jour les propriétés correspondantes à votre SensorMode chaque fois que vous les lisez. Cela met essentiellement le capteur en un mode « seulement de lecture » où tout ce que vous écrivez à ces propriétés devient écrasé par son comportement de sensing interne.
- Manual éteint le comportement de sensing interne. Les propriétés de sortie sont gratuites pour que vous écrivez comme vous le souhaitez et que le SensorMode ne fait rien.
Créez un script qui exécute votre propre logique de sensing et écrit les sorties dans vos propriétés de sortie sensor. Typiquement, vous utiliserez une requête spatiale comme WorldRoot:Raycast() ou WorldRoot:Blockcast() qui renvoie un résultat RaycastResult. Votre script peut alors prendre les propriétés de sortie et les définir sur les équivalents sensor:
Notez que vous devrez gérer la fréquence à laquelle vos requêtes s'exécutent et mettre à jour leur instance de capteur.
Le ControllerManager continuera d'utiliser les capteurs qu'il a été assignés, en prenant les données que vous lui apportez.