IKControl

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

IKControl Instanzen erzeugen prozedurale Animationspositionen mit umgekehrter Kinematik (IK).Sie ermöglichen es dir, Charaktere realistisch auf ihre Umgebung zu reagieren.

Zum Beispiel kann ein Charakter seine Hand genau auf einen Türgriff legen, und der Charakter wird dies unabhängig von seiner Position tun.IKControls bieten den Vorteil, dass weniger Animationen für dein Spiel erstellt werden müssen, während du deinem Erlebnis ein realistischeres und polierteres Gefühl verleihst.

IKControls muss ein Kind von einem Humanoid oder AnimationController mit einem Animator und all ihren erforderlichen Eigenschaften richtig eingestellt sein, sonst haben sie keine Wirkung.Die erforderlichen Eigenschaften sind Type , EndEffector , Target , ChainRoot .Sobald diese festlegensind, modifiziert das IkControl die Pose deines Charakters, wie du es spezifizierst.Das folgende Codebeispiel zeigt, wie du deine erste IKControl einrichtest und beginnst, realistischere Animationen für dein Spiel zu erstellen.

Du kannst IKControls verwenden, um einen Charakter zu erstellen:

  • Drehe seinen Kopf und seinen Torso, um einen Punkt von Interesse in der Welt zu betrachten.
  • Modifizieren Sie seine Fußpositionen, um auf dynamisches Geländezu reagieren. Passen Sie seine Beine und Füße an, um sie entsprechend auf Terrain mit Felsen und Schrägungen zu platzieren.
  • Halte eine Waffe und stelle ihre Hände angemessen auf den Griff, ohne Animationen für jede Waffe im Spiel erstellen zu müssen.
  • Ziele auf einen Punkt in der Welt, so dass die Spitze des Waffenpunkts genau auf das zielt, was du schießen möchtest. Besonders nützlich in Drittpersonenschützen.
  • Lege seine Hände auf das Lenkrad eines Autos und folge ihm, wenn es sich dreht.
  • Viel mehr!

IKControl wird die Animation für alle Teile zwischen dem ChainRoot und dem EndEffector außer Kraft setzen.Du kannst es aktivieren/deaktivieren, indem du Enabled verwendest oder ändern, wie viel sie eine Auswirkung auf die zugrunde liegende Animation haben, indem du Weight verwendest.Sei vorsichtig: Wenn du deine IKControls korrekt nicht einrichtest, könntest du schlechte und unrealistische Posen generieren!

Code-Beispiele

This sample shows the basic setup for an IKControl that moves a character's left arm to reach for a point in the world.

IKControl setup

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

Zusammenfassung

Eigenschaften

  • Parallel lesen

    Der letzte Teil, an dem Sie interessiert sind, Ihren Charakter zu bewegen.Zum Beispiel der Oberarm.Muss ein Vorfahre von EndEffector und ein BasePart oder ein Bone in deinem Charakter sein.

  • Parallel lesen

    Schaltet die Steuerung ein und aus. Standardmäßig wahr.

  • Parallel lesen

    Der Teil, an dem Sie sich interessieren, um sich auf den Weg zu bringen, um die Target zu erreichen.Zum Beispiel die Hand deines Charakters.Muss ein Nachkomme von ChainRoot und ein BasePart oder ein Bone in deinem Charakter sein.

  • Ein zusätzlicher Versatz, der auf dem EndEffector in seinem lokalen Raum angewendet wird, um zu ändern, wo es sich bewegt.

  • Parallel lesen

    Ein zusätzlicher Versatz wird auf die Target angewendet, um zu ändern, wo sich die EndEffector bewegt.

  • Parallel lesen

    Eine optionale Instanz, die festlegt, in welche Richtung sich die Kette biegt. Du kannst dies verwenden, um anzugeben, in welche Richtung sich ein Ellenbogen oder ein Knie beugt.

  • Parallel lesen

    Gibt die Reihenfolge an, in der Steuerelemente gelöst werden. Höhere Werte haben höhere Priorität.

  • Parallel lesen

    Gibt die durchschnittliche Anzahl der Sekunden an, die es für die EndEffector dauert, bis sie die Target erreicht.

  • Parallel lesen

    Das Objekt, auf das die EndEffector zugreift oder zeigt.Es kann alles sein, was eine Position in der Welt hat, wie BasePart , Attachment , Bone oder Motor6D .

  • Parallel lesen

    Gibt an, wie der Solver diese Kontrolle erfüllt.

  • Parallel lesen

    Gibt das Gewicht des IK-Steuerziels an. Sollte sich im Bereich [0, 1] befinden.

Eigenschaften

ChainRoot

Parallel lesen

Durch die Angabe von einem ChainRoot und einem EndEffector weisen Sie das IKControl an, dass es erlaubt ist, alle Teile zwischen den beiden zu verschieben und zu drehen, um die EndEffector in die Target zu bewegen.Wenn du zum Beispiel die LeftHand als EndEffector und den LeftUpperArm als ChainRoot angibst, bewegt sich die Steuer 3 Teile: die LeftHand, den LeftLowerArm und den LeftUpperArm.Vermeiden Sie die Einstellung ChainRoot als tatsächliche Wurzel des Charakters, da dies unrealistische Ergebnisse produziert.

Enabled

Parallel lesen

Diese Eigenschaft ermöglicht es Ihnen, die IK-Steuerung ein- und auszuschalten.Es ist standardmäßig aktiviert.Wenn Enabled falsch ist, ist die IK-Steuerung deaktiviert und wird vom zugrunde liegenden Berechnernicht gelöst.

EndEffector

Parallel lesen

Die EndEffector beschreibt den letzten Teil der Kette deines Charakters, den du beeinflussen möchtest.Zum Beispiel könnte es die Hand sein, wenn du den ganzen Arm bewegen möchtest, um einen Punkt zu erreichen.Es kann ein BasePart auf einem Zeichen sein, das ein Motor6D als sein Kind hat, ein Motor6D direkt, ein Bone oder ein Attachment.Der Pivot der ausgewählten bewegt sich zum , so dass Sie verwenden können, um zu modifizieren, an welchem Punkt ein erreicht werden sollte.

EndEffectorOffset

Parallel lesen

Der Endeffektor-Offset ist ein zusätzlicher angewendet auf dem >, der den endgültigen erzeugt, um den zu platzieren.Standardmäßig ist es die Identität CFrame, also wenn du es nicht festlegst, hat es keine Auswirkung und die EndEffector verwendet den Target``Datatype.CFrame direkt, was im lokalen Raum des EndEffector festgelegt ist.

Alternativ kannst du Anhänge verwenden, indem du einen Anhang als EndEffector festlegst, der ihn in die Target verlegt, anstatt die Teile, an die er angehängt ist, effektiv zu erhalten, wodurch das gleiche Ergebnis erzielt wird.

Du kannst auch EndEffectorOffset verwenden, um zu modifizieren, auf welche Achse des EndEffector die Target zeigen soll, wenn du LookAt als Type verwendest.

Offset

Parallel lesen

Der Offset ist ein zusätzlicher CFrame , der auf dem Target``Datatype.CFrame angewendet wird, der die endgültige CFrame erzeugt, um den EndEffector zu platzieren.Es ist standardmäßig seine Identität, also wenn du es nicht festlegst, hat es keine Auswirkung und die EndEffector wird die Target``Datatype.CFrame direkt verwenden.Du kannst es animieren, um prozedurale Animationen wie das Tippen auf einer Tastatur zu erstellen.Es ist nützlich, wenn die Target und EndEffector nicht ausgerichtet sind und du sie mit einer zusätzlichen Rotation oder Übersetzung korrigieren musst.

Parallel lesen

Die Pole ist eine optionale Instance, die dir die Kontrolle gibt, wie sich mittlere Teile in deinem Charakter biegen sollen.Es kann alles sein, was eine Position in der Welt hat, wie BasePart , Attachment , Bone , Motor6D .Es ist standardmäßig nil.Wenn du es spezifizierst, wird der zugrunde liegende Solver die Teile in Richtung darauf biegen.Wenn es nil ist, wird der Solver versuchen, Ellenbogen und Knie so zu biegen, dass sie basierend auf dem Glied des Charakters angemessen sind.Die Gliedmaße wird "Arm" sein, wenn du entweder die linke Hand oder die rechte Hand auswählst, und als die entsprechende linke Oberhand oder rechte Oberhand , und es wird "Bein" sein, wenn du als entweder die linke Oberarmenrückseite oder die rechte Oberarmrückseite auswählst, und es wird "Bein" sein, wenn du als entweder die linke Unterarmrückseite oder die rechte Unterarmrückseite auswählst.In allen anderen Fällen, wenn du keinen Pfeiler spezifizierst, könnte die Kette nicht wie erwartet gebogen werden.

Priority

Parallel lesen

Wenn mehrere Steuerelemente auf einem Charakter aktiv sind, wirkt sich die Reihenfolge, in der sie vom zugrunde liegenden System gelöst werden, auf die endgültig generierte Pose aus.Durch Ändern dieses Werts geben Sie die Reihenfolge an, in der die Steuerelemente befriedigt sind.Höhere Werte haben höhere Priorität, und höher prioritäre Steuerelemente werden später gelöst, weil ihr Ergebnis das vorherige Ergebnis anderer Steuerungüberschreiben könnte.Wenn du mehrere IK-Steuerelemente auf einem Charakter hast und eines wichtiger ist als das andere, gib eine niedrigere Priorität für es an.Es ist standardmäßig 0, was bedeutet, dass alle Steuerelemente die gleiche Priorität haben.

SmoothTime

Parallel lesen

Dieser Wert gibt die durchschnittliche Anzahl der Sekunden an, die es für die EndEffector dauert, die Target zu erreichen.Das Verhalten entspricht dem eines kritisch gedämpften Federspringes, bei dem die Rate der Änderung proportional zur Entfernung zum Ziel ist und keine Oszillationen auftreten, wenn sich dem Ziel nähert.Kleinere Werte erzeugen eine schnellere Konvergenz und größere Werte erzeugen eine langsamere Konvergenz.Ein Wert von 0 deaktiviert die Glättung.Der Standardwert ist 0.05, um eine sehr leichte Glättung zu liefern, die die Bewegung realistisch fühlen lässt.

Target

Parallel lesen

Die Target repräsentiert einen Punkt ( CFrame ) in der Welt, an den dein EndEffector erreichen soll.Das genaue Verhalten des Erreichens kann über die EigenschaftenType festgelegt werden, und ein zusätzliches Offset kann darüber angewendet werden, um es zu modifizieren.Wenn du ein Target festlegst, wird es entweder durch Physik oder ein Skript, das. PL: die Skriptsverschoben, bei jedem Frame wird der IKControl versuchen, es zu befriedigen und den Punkt automatisch zu aktualisieren, um zu erreichen.

Parallel lesen

Durch Ändern der Type kannst du das Verhalten der Steuer ändern. Dies sind die verfügbaren Optionen:

  • Transformieren: Es ist eine volle Beschränkung. Stellt das EndEffector``Datatype.CFrame auf das der Target überein.
  • Position: Aligniert die EndEffector Position auf die des Target .
  • Drehung: Aligniert die EndEffector Drehung auf die von der Target .
  • LookAt: bewegt und orientiert die gesamte Kette, um eine Achse (Standardmäßig die vorwärts-Achse) auf dem EndEffector Punkt an einer Position in der Welt zu positionieren, die von Target angegeben wird.

Weight

Parallel lesen

Sie können steuern, wie sehr eine bestimmte Steuerung die Charakterpose beeinflusst, indem Sie diese Eigenschaftenverwenden.Werte sollten sich in der [0, 1] Bereich befinden.0 bedeutet keinen Effekt, und 1 bedeutet den vollen Effekt der IK-Steuerung.Werte außerhalb dieser Reichweite werden gekürzt.Die nahtlose Änderung dieses Werts ermöglicht es Ihnen, eine bestimmte Steuerung ein- oder auszublasen, um Vibrationen zu vermeiden.Es ist standardmäßig 1.

Das Gewicht bestimmt den Interpolationsfaktor zwischen dem Endeffektor und dem IK-Ziel.Die Gewichtseinstellung auf 0 deaktiviert die IK-Steuerung nicht, weil andere Faktoren, einschließlich des SmoothTime-Glättungsfaktors und des Stocks, die Pose immer noch ändern können.Um die IK-Steuerung wirklich zu deaktivieren, schalte die Eigenschaft Enabled auf false.

Methoden

GetChainCount


Rückgaben

GetChainLength


Rückgaben

GetNodeLocalCFrame

Parameter

index: number
Standardwert: ""

Rückgaben

GetNodeWorldCFrame

Parameter

index: number
Standardwert: ""

Rückgaben

GetRawFinalTarget


Rückgaben

GetSmoothedFinalTarget


Rückgaben

Ereignisse