IKControl
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
IKControl istanze generano posizioni di animazione procedurali utilizzando Inverse Kinematics (IK). Ti consente di fare rispondere i personaggi in modo realistico al loro Ambiente.
Ad esempio, puoi fare in modo che un personaggio metta la sua mano su un maniglia di porta esattamente, e il personaggio lo farà indipendentemente dalla sua posizione. IKControls fornisce l'anticipo di dover creare meno animazioni per il tuo gioco mentre dai alla tua esperienza un aspetto più realistico e polito.
IKControls deve essere un figlio di un Humanoid o AnimationController con un 0>
Puoi usare IKControls per creare un personaggio:
- Ruota la sua testa e il suo torso per guardare a un punto di interesse nel Mondo.
- Modifica le sue posizioni dei piedi per rispondere al terreno dinamico. Adjust its legs and feet to place them accordingly on terrain with rocks and slopes.
- Tieni una pistola e posizionala le sue mani in modo appropriato sulla impugnatura senza dover creare animazioni per ciascuna pistola nel Gioco.
- Punta a un punto nel Mondo, in modo che il dito della pistola punti esattamente a ciò che vuoi sparare. Utile in particolare per gli sparatori in terza persona.
- Metti le tue mani al volante di un'auto e segui quando gira.
- Molto di più!
IKControl覆盖了所有部分之间的 animazione,从 ChainRoot 到 Class.
Campioni di codice
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
Sommario
Proprietà
L'ultima parte che sei interessato a spostare il tuo personaggio. Ad esempio, l'ascia superiore. Devi essere un antenato di EndEffector e essere un BasePart o un Bone nel tuo personaggio.
Attiva/disattiva il controllo. Vero per Offpredefinita.
La parte che sei interessato a spostare per raggiungere il Target . Ad esempio, la mano del tuo personaggio. Deve essere discendente di ChainRoot e essere un BasePart o un 1> Class.Bone1> nel tuo personaggio.
Un ulteriore offset applicato sopra il EndEffector nella sua area locale per cambiare dove si muove.
Un ulteriore offset applicato sopra il Target per cambiare dove si muove il EndEffector .
Un'istanza opzionale che determina in quale direzione si piega la catena. Puoi usarlo per specificare in quale direzione si piega un gomito o un ginocchio.
Specifica l'ordine in cui i controlli vengono risolti. I valori più alti hanno la priorità più alta.
Specifica il numero medio di secondi che ci vuole per il EndEffector per raggiungere facilmente il Target .
L'oggetto che il EndEffector raggiunge o punta. Può essere qualsiasi cosa che abbia una posizione nel Mondo, come BasePart , Attachment , 1> Class.Bone1> , o 4> Class.Motor6D4> .
Specifica come il solvente soddisfi questo controllo.
Specifica il peso della target di controllo IK. Dovrebbe essere nella fascia [0, 1].
Metodi
Proprietà
Enabled
Questa proprietà ti consente di attivare e disattivare il controllo IK. È impostato per impostazione predefinita. Quando Enabled è falso, il controllo IK è disattivato e non risolto dal Risolutore fisico PGSsottostante.
EndEffectorOffset
L'end-eff
In alternativa, puoi utilizzare gli allegati impostando un allegato come EndEffector , che lo sposta sul Target invece delle parti a cui è allegato, ottenendo effettivamente lo stesso Risultato.
Puoi anche usare EndEffectorOffset per modificare quale asse del EndEffector dovrebbe puntare al Target quando si usa 1> LookAt1> come 4>
Pole
Il Pole è un Instance opzionale che dà controllo su come le parti nel tuo personaggio dovrebbero piegarsi. Può essere qualsiasi cosa che abbia una posizione nel Mondo, come BasePart , 1>Class.IKControl.Leg1> e 4>Class.IKControl.ChainRoot4>. È per impostazione predefinita nulla. Quando lo specifici, il solvente di base cercherà di piegare le parti in
Priority
Quando più controlli sono attivi su un personaggio, l'ordine in cui vengono risolti dal sistema sottostante influisce sulla posa finale generata. Cambiando questo valore, specifici l'ordine in cui i controlli sono soddisfatti. I valori più alti hanno una priorità più alta e i controlli di priorità più alta vengono risolti più tardi poiché il loro risultato potrebbe sovrascrivere il risultato precedente di altri cont
SmoothTime
Questo valore specifica il numero medio di secondi che ci vuole per il EndEffector per raggiungere il Target . Il comportamento è quello di una molla inibita
Cambiando il Type, puoi cambiare il comportamento del controllo. Questi sono gli opzioni disponibili:
- Transform: è una Vincolo6-DoF completa. Allineare il EndEffector``Datatype.CFrame a quello del Target .
- Posizione: allineare la posizione EndEffector a quella di Target .
- Rotazione: allineare la rotazione EndEffector alla rotazione Target .
- LookAt: muove e orienta l'intera catena per creare un asse (per impostazione predefinita l'asse di avanti) su il EndEffector punto a una posizione nel mondo specificata da Target .
Weight
Puoi controllare quanto un dato controllo influenza la posa del personaggio utilizzando questa Proprietà. I valori dovrebbero essere nell'intervallo [0, 1]. 0 non ha effetto, e 1 ha effetto completo del controllo IK. I valori oltre questo intervallo sono arrotondati. La facilità con cui si varia questo valore ti consente di mescolare in o fuori un controllo specifico per evitare il movimento di lag. È 1 per impostazione predefinita.
Il peso determina il fattore di interpolazione tra il End-Effector e il target IK. Impostando il peso su 0 non disabilita il controllo IK poiché altri fattori, tra cui il fattore di levitazione SmoothTime e Pole, possono ancora modificare la posa. Per veramente disabilitare il controllo IK, imposta la proprietà Enabled su false.