IKControl
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
IKControl instancje generują pozy pozy animacji proceduralnej używając Inverse Kinematics (IK). Umożliwiają one generowanie postaci, aby odpowiadały realnie na swoje środowisko.
Na przykład możesz sprawić, że ręka postaci dokładnie leży na uchwycie drzwi, a postać będzie działać niezależnie od jej pozycji. IKControls daje przewagę, że trzeba stworzyć znacznie mniej animacji dla twojej gry, podczas gdy daje twojemu doświadczeniu bardziej realistyczny i polerowany wygląd.
IKControls musi być dzieckiem Humanoid lub AnimationController z ustawionym 0>
Możesz użyć IKControls, aby stworzyć postać:
- Obróć jego głowę i tułów, aby zobaczyć punkt zainteresowania w świecie.
- Zmień pozycje jego nóg, aby odpowiedzieć na dynamiczny teren. Dostosuj jego nóżki i nóżki, aby umieścić je odpowiednio na terenie z kamieniami i połóżnikami.
- Przytrzymaj broń i umieść jej ręce odpowiednio na uchwycie, bez potrzeby tworzenia animacji dla każdej broni w gra.
- Celuj w punkt na świecie, aby dostać dokładnie to, co chcesz strzelać. szczególnie użyteczne w strzelcach w trybie pierwszej osoby.
- Postaw ręce na kierownicy samochodu i śledź go, gdy się kręci.
- O wiele więcej!
IKControl zakryje animację dla wszystkich części między ChainRoot i
Przykłady kodu
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
Podsumowanie
Właściwości
Ostatnią część, którą jesteś zainteresowany przeniesieniem swojego postaci. Na przykład, górną rękę. Musi być przodkiem EndEffector i być BasePart lub Bone w swoim postaci.
Przełącza kontrolę na i wyłączone. Domyślnie prawdziwy.
Część, którą jesteś zainteresowany przeniesieniem, aby dotrzeć do Target. Na przykład, rękę swojego postaci. Musi być potomstwem ChainRoot i być Class.BasePart lub 1> Class.Bone1> w twoim postaci.
Dodatkowy odchód zostanie zastosowany na górze EndEffector w jego lokalnej przestrzeni, aby zmienić, gdzie się porusza.
Dodatkowy odchód zostanie zastosowany na górze Target, aby zmienić, gdzie się porusza EndEffector.
Opcjonalna instancja, która określa, w którą stronę się skręca łańcuch. Możesz użyć tego, aby określić, w którą stronę się skręca kciuk lub kolano.
Określa kolejność rozwiązywania sterowania. Wyższe wartości mają wyższy priorytet.
Określa średnią liczbę sekund, które potrzebuje EndEffector, aby płynnie dotrzeć do Target.
Obiekt, do którego dostęp ma EndEffector, może być czymkolwiek, co ma pozycję w świecie, taką jak BasePart, Attachment, 1> Class.Bone1> lub 4> Class.Motor6D4>.
Określa, jak rozwiązanie spełnia ten kontroler.
Określa wagę celu kontroli IK. Powinno być w zakresie [0, 1].
Metody
Właściwości
Enabled
Ta właściwość umożliwia przełączenie kontroli IK na i wyłączone. Jest ona domyślnie włączona. Gdy Enabled jest fałszywy, kontrola IK jest wyłączona i nie jest rozwiązana przez podstawowy rozwiązać.
EndEffectorOffset
O
Alternatywnie możesz użyć załączników, ustawiając załącznik jako EndEffector, który przenosi go do Target zamiast części, do których jest załączony, co skutecznie daje taki sam wynik.
Możesz również użyć EndEffectorOffset , aby zmienić, którego osi EndEffector powinny wskazywać na Target przy użyciu 2>LookAt2> jako
Priority
Gdy wiele kontrol jest aktywnych na postaci, porządek, w jaki sposób są rozwiązywane przez podstawowy system, wpływa na ostatecznie generowaną postać. Poprzez zmianę tego wartości, określasz priorytet, w jaki sposób kontrolery są zaspokajane przez system podstawowy. Im wyższe wartości, tym wyższa priorytet, a kontrolery
SmoothTime
Ta wartość określa średnią liczbę sekund, które potrzebuje EndEffector, aby osiągnąć Target. Zachowanie jest takie, jak dla
Poprzez zmianę Type możesz zmienić zachowanie kontroli. Oto dostępne opcje:
- Transformacja: jest to pełen 6-DoF约束. Dostosowuje EndEffector``Datatype.CFrame do tego z Target .
- Pozycja: zwraca pozycję EndEffector do pozycji Target .
- Rotacja: zwraca EndEffector obrót na ten z Target .
- LookAt: przesuwa i orientuje całą łańcuch, aby utworzyć osi (domyślnie osi przodu) na EndEffector punkt na pozycji w świecie określonej przez Target .
Weight
Możesz kontrolować, jak bardzo dany kontroler wpływa na postać, używając tego właściwości. Wartości powinny być w zakresie [0, 1]. 0 oznacza brak efektu, a 1 oznacza pełen efekt kontroli IK. Wartości poza tym zakresem są skrócone. Płynnie zmieniając tę wartość, możesz łączyć dowolny kontroler, aby uniknąć gwałtownych ruchów
Ciężar określa czynnik interpolacji między End-EffECTorem a celem IK. Ustawienie całkowitej masy na 0 nie wyłącza kontroli IK, ponieważ inne czynniki, w tym SmoothTime, nadal mogą zmieniać pozy. Aby naprawdę wyłączyć kontrolę IK, ustaw właściwość Enabled na fałszywą.