IKControl

Pokaż przestarzałe

*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

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

Podsumowanie

Właściwości

  • Odczyt równoległy

    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.

  • Odczyt równoległy

    Przełącza kontrolę na i wyłączone. Domyślnie prawdziwy.

  • Odczyt równoległy

    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.

  • Odczyt równoległy

    Dodatkowy odchód zostanie zastosowany na górze EndEffector w jego lokalnej przestrzeni, aby zmienić, gdzie się porusza.

  • Odczyt równoległy

    Dodatkowy odchód zostanie zastosowany na górze Target, aby zmienić, gdzie się porusza EndEffector.

  • Odczyt równoległy

    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.

  • Odczyt równoległy

    Określa kolejność rozwiązywania sterowania. Wyższe wartości mają wyższy priorytet.

  • Odczyt równoległy

    Określa średnią liczbę sekund, które potrzebuje EndEffector, aby płynnie dotrzeć do Target.

  • Odczyt równoległy

    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>.

  • Odczyt równoległy

    Określa, jak rozwiązanie spełnia ten kontroler.

  • Odczyt równoległy

    Określa wagę celu kontroli IK. Powinno być w zakresie [0, 1].

Właściwości

ChainRoot

Odczyt równoległy

Poprzez określenie ChainRoot i Class.IKControl.EndEffector|End

Enabled

Odczyt równoległy

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ć.

EndEffector

Odczyt równoległy

Class.IKControl.EndEffector|EndEffector opisuje ostatni

EndEffectorOffset

Odczyt równoległy

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

Offset

Odczyt równoległy

Odległość jest dodatkowym CFrame zastosowan

Odczyt równoległy

The Pole is an optional Instance that gives

Priority

Odczyt równoległy

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

Odczyt równoległy

Ta wartość określa średnią liczbę sekund, które potrzebuje EndEffector, aby osiągnąć Target. Zachowanie jest takie, jak dla

Target

Odczyt równoległy

Class.IKControl.Target|Target reprezentuje punkt (

Odczyt równoległy

Poprzez zmianę Type możesz zmienić zachowanie kontroli. Oto dostępne opcje:

Weight

Odczyt równoległy

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ą.

Metody

GetChainCount


Zwroty

GetChainLength


Zwroty

GetNodeLocalCFrame

Parametry

index: number

Zwroty

GetNodeWorldCFrame

Parametry

index: number

Zwroty

GetRawFinalTarget


Zwroty

GetSmoothedFinalTarget


Zwroty

Zdarzenia