IKControl
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
IKControl les instances génèrent des poses d'animation procédurale à l'aide de kinétique inversée (IK). Ils vous permettent de faire réagir les personnages de manière réaliste à leur environnement.
Par exemple, vous pouvez faire en sorte qu'un personnage place sa main sur un poignée de porte exactement, et le personnage le fera indépendamment de son emplacement. IKControls fournissent l'avantage d'avoir à créer beaucoup moins d'animations pour votre jeu tout en donnant à votre expérience un meilleur sentiment réaliste et poli.
IKControls doit être un enfant d'un Humanoid ou d'un AnimationController avec un 0>
Vous pouvez utiliser IKControls pour faire un personnage :
- Faites pivoter sa tête et son torse pour regarder un point d'intérêt dans le monde.
- Modifiez ses positions de pieds pour répondre aux terrains dynamiques. Ajustez ses jambes et ses pieds pour les placer selon les rochers et les pentes.
- Tenez une arme et placez ses mains correctement sur le poignée sans avoir à créer des animations pour chaque arme dans le jeu.
- Visez un point dans le monde, afin que le bout du point d'arme soit exactement ce que vous voulez tirer. Utile dans les tirs à la troisième personne.
- Placez ses mains sur le volant d'une voiture et suivez-le lorsqu'il tourne.
- Beaucoup plus!
IKControl remplacera l'animation pour toutes les parties entre le ChainRoot et le Class.
Échantillons de code
local character = script.Parent.Character
local humanoid = character.Humanoid
local root = character.HumanoidRootPart
-- Create a new attachment to use as the IKControl.Target
local target = Instance.new("Attachment")
target.CFrame = CFrame.new(-1, 0, -1)
target.Parent = root
local ikControl = Instance.new("IKControl")
ikControl.Type = Enum.IKControlType.Position
ikControl.EndEffector = character.LeftHand
ikControl.ChainRoot = character.LeftUpperArm
ikControl.Target = target
ikControl.Parent = humanoid
Résumé
Propriétés
La dernière partie que vous êtes intéressé à déplacer votre personnage. Par exemple, le bras supérieur. Doit être un ancêtre de EndEffector et être un BasePart ou un Bone dans votre personnage.
Bascule le contrôle sur et off. Vrai par défaut.
La partie que vous êtes intéressé à déplacer pour atteindre le Target. Par exemple, la main de votre personnage. Doit être une descendant de ChainRoot et être un BasePart ou un 1> Class.Bone1> dans votre personnage.
Un décalage supplémentaire appliqué au-dessus du EndEffector dans son espace local pour changer où il se déplace.
Un décalage supplémentaire appliqué au-dessus de la Target pour modifier l'endroit où le EndEffector se déplace.
Une instance facultative qui détermine la façon dont la chaîne se plie. Vous pouvez l'utiliser pour spécifier la façon dont un coude ou une genouillère se plie.
Spécifie l'ordre dans lequel les contrôles sont résolus. Les valeurs plus élevées ont une priorité plus élevée.
Spécifie le nombre moyen de secondes qu'il faut pour que le EndEffector atteigne l'Target .
L'objet que le EndEffector atteint ou pointe. Il peut être n'importe quoi qui a une position dans le monde, comme BasePart, Attachment, 1> Class.Bone1>, ou 4> Class.Motor6D4>.
Spécifie comment le solvant satisfait ce contrôle.
Spécifie le poids de la cible de contrôle IK. Il devrait être dans la gamme [0, 1].
Méthodes
Propriétés
Enabled
Cette propriété vous permet de basculer le contrôle IK oui ou off. Il est par défaut. Lorsque Enabled est faux, le contrôle IK est désactivé et n'est pas résolu par le solveur.
EndEffector
La partie <a href="/reference/engine/datatypes">de la chaîne de votre personnage</a> que vous souhaitez affecter. Par exemple, il pourrait s
EndEffectorOffset
L'偏
Alternativement, vous pouvez utiliser des accessoires en définissant un accessoire comme EndEffector , ce qui le déplace vers le Target au lieu des parties qu'il attache, ce qui donne efficacement le même resultats.
Vous pouvez également utiliser EndEffectorOffset pour modifier l'axe dans lequel le EndEffector devrait pointer sur le Target lors de l'utilisation de 1> LookAt1>
Pole
Le Pole est un optionnel Instance qui vous donne le contrôle sur la façon dont les parties de vot
Priority
Lorsque plusieurs contrôles sont actifs sur un personnage, l'ordre dans lequel ils sont résolus par le système sous-jacent affecte la posture finale générée. En changeant cette valeur, vous spécifiez l'ordre dans lequel les contrôles sont satisfaits. Les valeurs plus élevées ont une priorité plus élevée et les contrôles de plus haut niveau sont résolus plus tard car leur résultat peut dépasser le résultat précédent des
SmoothTime
Cette valeur spécifie le nombre moyen de secondes qu'il faut pour que le EndEffector atteigne le Target. Le comportement est que d'une ressort de rupt
En changeant le Type, vous pouvez modifier le comportement du contrôle. Voici les options disponibles :
- Transformer : c'est une contrainte 6-DoF complète. Aligne le EndEffector``Datatype.CFrame à celui de l' Target .
- Position: positionne la position de EndEffector à celle de Target.
- Rotation : EndEffector la rotation de Target à celle de Class.IKControl.Target|Target.
- LookAt: déplace et oriente toute la chaîne pour créer un axe (par défaut, l'axe avant) sur le EndEffector point à une position dans le monde spécifiée par Target.
Weight
Vous pouvez contrôler la mesure dans laquelle un contrôle affecte la posture du personnage en utilisant cette propriété. Les valeurs devraient être dans la gamme [0, 1]. 0 signifie aucun effet, et 1 signifie l'effet complet du contrôle IK. Les valeurs en dehors de cette gamme sont arrondies. La valeur lissement varie ce valeur pour permettre de mélanger dans ou hors un contrôle pour éviter le mouvement de secousse. Il est par défaut 1.
Le poids détermine le facteur d'interpolation entre le End-Effector et la cible IK. En activant le poids à 0, le IK Control ne désactive pas le Control IK car d'autres facteurs, y compris le SmoothTime smoothing factor et Pole, peuvent toujours modifier la position. Pour vraiment désactiver le IK Control, tournez la propriété Enabled sur false.