IKControl

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

IKControl các ví trường tạo dáng hoạt họa thủ tục sử dụng Kinematics đảo ngược (IK).Chúng cho phép bạn làm cho nhân vật phản ứng thực tế với môi trường của họ.

Ví dụ, bạn có thể làm cho một nhân vật đặt tay lên tay cầm cửa chính xác, và nhân vật sẽ làm như vậy một cách độc lập với vị trí của nó.IKControls cung cấp lợi thế cần tạo ít hoạt hình hơn cho trò chơi của bạn trong khi mang lại cho bạn trải nghiệm có cảm giác chân thực và hoàn thiện hơn.

IKControls phải là con của một Humanoid hoặc AnimationController với một Animator và có tất cả các tính chất cần thiết của họ được đặt đúng, nếu không chúng sẽ không có bất kỳ tác động nào.Các thuộc tính bắt buộc là Type , EndEffector , Target , ChainRoot .Ngay khi chúng được cài đặt, IkControl sẽ thay đổi tư thế của nhân vật của bạn như bạn đã định.Ví dụ mã sau đây cho thấy cách thiết lập lần đầu tiên của bạn IKControl và bắt đầu tạo các hoạt hình thực tế hơn cho trò chơi của bạn.

Bạn có thể sử dụng IKControls để tạo một nhân vật:

  • Xoay đầu và thân để nhìn vào một điểm thú vị trên thế giới.
  • Thay đổi vị trí chân để đáp ứng với địa hình năng động. Điều chỉnh chân và chân của nó để đặt chúng tương ứng trên địa hình có đá và dốc.
  • Giữ một khẩu súng và đặt tay của nó thích hợp trên tay cầm mà không cần phải tạo hoạt hình cho mỗi khẩu súng trong trò chơi.
  • Nhắm vào một điểm trên thế giới, để đầu đại bác chính xác nhắm vào những gì bạn muốn bắn. Đặc biệt hữu ích trong các trò chơi bắn súng góc nhìn thứ ba.
  • Đặt tay lên vô lăng của một chiếc xe và theo dõi nó khi nó quay.
  • Nhiều hơn nữa!

IKControl sẽ thay thế hoạt hình cho tất cả các bộ phận giữa ChainRootEndEffector .Bạn có thể bật/tắt nó bằng cách sử dụng Enabled hoặc thay đổi mức độ họ có ảnh hưởng đến hoạt hình gốc bằng cách sử dụng Weight .Hãy cẩn thận: nếu bạn không thiết lập đúng cách IKControls của bạn, bạn có thể tạo ra những tư thế xấu và không thực tế!

Mẫu mã

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

Tóm Tắt

Thuộc Tính

  • Đọc Song Song

    Phần cuối cùng mà bạn quan tâm đến việc di chuyển nhân vật của mình.Ví dụ, cánh tay trên.Phải là tổ tiên của EndEffector và là BasePart hoặc Bone trong nhân vật của bạn.

  • Đọc Song Song

    Bật/tắt điều khiển. Mặc định là True.

  • Đọc Song Song

    Phần mà bạn quan tâm đến việc di chuyển để đạt được Target .Ví dụ, bàn tay của nhân vật của bạn.Phải là con cháu của ChainRoot và phải là BasePart hoặc Bone trong nhân vật của bạn.

  • Đọc Song Song

    Một khấu trừ bổ sung được áp dụng trên đỉnh của EndEffector ở không gian địa phương để thay đổi nơi nó di chuyển.

  • Đọc Song Song

    Một khấu trừ bổ sung được áp dụng trên đỉnh của Target để thay đổi nơi EndEffector di chuyển.

  • Đọc Song Song

    Một ví dụ tùy chọn xác định theo cách chuỗi cong. Bạn có thể sử dụng điều này để xác định cách khuỷu hoặc đầu gối cong.

  • Đọc Song Song

    Xác định thứ tự mà các điều khiển được giải quyết. Giá trị cao hơn có ưu tiên cao hơn.

  • Đọc Song Song

    Xác định số giây trung bình mà nó mất để EndEffector đến mượt mà ở Target.

  • Đọc Song Song

    Vật thể mà EndEffector đạt tới hoặc chỉ vào.Nó có thể là bất cứ thứ gì có vị trí trên thế giới, như BasePart , Attachment , Bone , hoặc Motor6D .

  • Đọc Song Song

    Xác định cách giải quyết mà máy giải quyết đáp ứng điều khiển này.

  • Đọc Song Song

    Xác định trọng lượng của mục tiêu điều khiển IK. Nên nằm trong phạm vi [0, 1].

Thuộc Tính

ChainRoot

Đọc Song Song

Bằng cách xác định một ChainRoot và một EndEffector , bạn hướng dẫn IKControl rằng nó được phép di chuyển và xoay tất cả các bộ phận giữa hai để di chuyển EndEffector đến Target .Ví dụ, nếu bạn xác định LeftHand là EndEffector và LeftUpperArm là ChainRoot, điều khiển di chuyển 3 phần: LeftHand, LeftLowerArm và LeftUpperArm.Tránh cài đặt ChainRoot như là rễ thực sự của nhân vật bởi vì điều đó sản xuất kết quả không thực tế.

Enabled

Đọc Song Song

Tính năng này cho phép bạn bật/tắt điều khiển IK.Nó được bật mặc định.Khi Enabled là sai, điều khiển IK bị tắt và không được giải quyết bởi giải pháp cơ sở.

EndEffector

Đọc Song Song

Phần EndEffector mô tả phần cuối cùng trong chuỗi nhân vật bạn muốn ảnh hưởng.Ví dụ, nó có thể là bàn tay khi bạn muốn di chuyển toàn bàn tay để đạt đến một điểm.Nó có thể là một BasePart trên một nhân vật, có một Motor6D như con của nó, một Motor6D trực tiếp, một Bone hoặc một Attachment .Trung tâm của đối tượng được chọn EndEffector di chuyển đến Target , vì vậy bạn có thể sử dụng Attachments để thay đổi điểm nào của đối tượng BasePart nên tiếp cận được Target .

EndEffectorOffset

Đọc Song Song

Offset hiệu ứng cuối cùng là thêm CFrame được áp dụng trên đỉnh của Target``Datatype.CFrame sản xuất ra đầu cuối CFrame được sử dụng để đặt đầu EndEffector .Mặc định, đó là danh tính CFrame, vì vậy nếu bạn không đặt nó, nó không có hiệu lực và EndEffector sử dụng Target``Datatype.CFrame trực tiếp, điều này được định nghĩa trong không gian địa phương của EndEffector .

Ngoài ra, bạn có thể sử dụng Phụ kiện bằng cách thiết lập một Phụ kiện là EndEffector , di chuyển nó đến Target thay vì các bộ phận nó được gắn vào, hiệu quả có được kết quả tương tự.

Bạn cũng có thể sử dụng EndEffectorOffset để thay đổi trục nào của EndEffector nên chỉ vào Target khi sử dụng LookAt như Type .

Offset

Đọc Song Song

Offset là thêm CFrame được áp dụng trên đỉnh của Target``Datatype.CFrame sản xuất cuối cùng CFrame được sử dụng để đặt EndEffector .Nó là nhận dạng mặc định, vì vậy nếu bạn không đặt nó, nó không có hiệu lực và EndEffector sẽ sử dụng Target``Datatype.CFrame trực tiếp.Bạn có thể hoạt hình nó để tạo các hoạt hình thủ tục như gõ bàn phím.Nó hữu ích khi TargetEndEffector không được xếp cạnh nhau và bạn cần phải sửa chúng bằng cách xoay hoặc dịch thêm.

Đọc Song Song

The Pole là một tùy chọn Instance cho phép bạn kiểm soát cách các phần trung gian trong nhân vật của bạn nên cong.Nó có thể là bất cứ thứ gì có vị trí trên thế giới, như BasePart , Attachment , Bone , Motor6D .Mặc định là nil .Khi bạn xác định nó, giải pháp cơ sở sẽ làm cho các bộ phận cong về phía nó.Khi nó là nil, người giải quyết sẽ cố gắng làm cho khuỷu và đầu gối cong phù hợp dựa trên chi thể của nhân vật.Chi nhánh sẽ là "Cánh tay" khi bạn chọn là hoặc Bàn tay trái hoặc Bàn tay phải và như cánh tay trái hoặc cánh tay phải , và nó sẽ là "Chân" khi bạn chọn là hoặc chân trái hoặc chân phải , và nó sẽ là "Chân" khi bạn chọn là hoặc chân phải .Trong tất cả các trường hợp khác, nếu bạn không đặt cột, dây xích có thể không uốn như bạn mong đợi.

Priority

Đọc Song Song

Khi nhiều điều khiển được bật trên một nhân vật, thứ tự mà chúng được giải quyết bởi hệ thống cơ sở ảnh hưởng đến tư thế cuối cùng được tạo ra.Bằng cách thay đổi giá trị này, bạn xác định thứ tự mà các điều khiển được thỏa mãn.Các giá trị cao hơn có ưu tiên cao hơn, và các điều khiển ưu tiên cao hơn được giải quyết sau vì kết quả của chúng có thể làm hỏng kết quả trước của các điều khiển khác.Nếu bạn có nhiều điều khiển IK trên một nhân vật và một trong số đó quan trọng hơn những người khác, hãy xác định ưu tiên thấp hơn cho nó.Nó là 0 mặc định, có nghĩa là tất cả các điều khiển có cùng ưu tiên.

SmoothTime

Đọc Song Song

Giá trị này xác định số trung bình của giây mà EndEffector mất để đạt được Target .Hành vi là của một mùa xuân bị giảm nghiêm trọng, nơi tốc độ thay đổi tỷ lệ với khoảng cách đến mục tiêu và không có sự dao động nào khi tiếp cận mục tiêu.Các giá trị nhỏ hơn tạo sự hợp nhất nhanh hơn, và các giá trị lớn hơn tạo sự hợp nhất chậm hơn.Một giá trị 0 vô hiệu hóa việc làm mịn.Giá trị mặc định là 0.05 để cung cấp một mức làm mịn rất nhẹ làm cho chuyển động cảm thấy thực tế.

Target

Đọc Song Song

The Target đại diện cho một điểm ( CFrame ) trên thế giới mà bạn muốn EndEffector đạt được.Hành vi chính xác của việc tiếp cận có thể được đặt qua thuộc tính Type và thêm Offset có thể được áp dụng trên nó để sửa đổi nó.Nếu bạn đặt một Target được di chuyển bởi vật lý hoặc một kịch bản, tại mỗi khung IKControl sẽ cố gắng đáp ứng nó, tự động cập nhật điểm đến.

Đọc Song Song

Bằng cách thay đổi Type, bạn có thể thay đổi hành vi của điều khiển. Đây là những lựa chọn có sẵn:

  • Biến đổi: đó là một hạn chế 6-DoF đầy đủ. Xếp hợp EndEffector``Datatype.CFrame với hạn chế Target .
  • Vị trí: căn chỉnh vị trí EndEffector với vị trí Target .
  • Vòng xoay: căn chỉnh vòng xoay EndEffector với vòng xoay Target .
  • LookAt: di chuyển và hướng dẫn toàn bộ chuỗi để tạo một trục (mặc định là trục trước) trên điểm EndEffector ở một vị trí trên thế giới được định bởi Target .

Weight

Đọc Song Song

Bạn có thể kiểm soát mức độ mà một điều khiển nhất định ảnh hưởng đến tư thế nhân vật bằng cách sử dụng thuộc tính này.Giá trị nên nằm trong phạm vi [0, 1].0 có nghĩa là không có hiệu ứng, và 1 có nghĩa là toàn bộ hiệu ứng của điều khiển IK.Các giá trị ngoài phạm vi này bị cắt.Thay đổi một cách mượt mà giá trị này cho phép bạn thêm hoặc bớt một điều khiển cụ thể để tránh làm gián đoạn chuyển động.Nó là 1 mặc định.

Trọng lượng xác định yếu tố nhân giữa End-Effector và mục tiêu IK.Đặt trọng lượng thành 0 không vô hiệu hóa kiểm soát IK bởi các yếu tố khác, bao gồm cả yếu tố làm mịn SmoothTime và Cột, vẫn có thể thay đổi tư thế.Để thực sự vô hiệu hóa điều khiển IK, chuyển thuộc tính Enabled thành false.

Phương Pháp

GetChainCount


Lợi Nhuận

GetChainLength


Lợi Nhuận

GetNodeLocalCFrame

Tham Số

index: number
Giá Trị Mặc Định: ""

Lợi Nhuận

GetNodeWorldCFrame

Tham Số

index: number
Giá Trị Mặc Định: ""

Lợi Nhuận

GetRawFinalTarget


Lợi Nhuận

GetSmoothedFinalTarget


Lợi Nhuận

Sự Kiện