IKControl
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
IKControl ตัวอย่างจะสร้างโปสท่าอนิเมชันที่เป็นธรรมชาติโดยใช้ Inverse Kinematics (IK) พวกเขาช่วยให้คุณสามารถทำให้ตัวละครตอบสนองต่อสภาพแวดล้อมของพวกเขาได้อย่างเป็นธรรมชาติ
เช่น คุณสามารถทำให้ตัวละครวางนิ้วของมันบนจุดหมุนประตูอย่างถูกต้องและตัวละครจะทำเช่นนั้นอย่างอิสระโดยไม่ต้องสร้างแอนิเมชันมากขึ้นสำหรับเกมของคุณในขณะที่ให้ประสบการณ์ที่เหมาะสม
IKControls ต้องเป็นลูกของ Humanoid หรือ AnimationController
คุณสามารถใช้ IKControls เพื่อสร้างตัวละคร:
- หมุนหัวและลำตัวของมันเพื่อดูสิ่งที่น่าสนใจในโลก
- ปรับตำแหน่งเท้าของมันเพื่อตอบสนองต่อการเปลี่ยนแปลงของพื้นที่ ปรับให้ขาและเท้าของมันเพื่อวางพวกเขาตามลำดับบนพื้นด้วยหินและสโคลเปีย
- ถือปืนและวางมือของมันอย่างเหมาะสมบนด้ามจับโดยไม่จำเป็นต้องสร้างอนิเมชันสำหรับแต่ละปืนในเกม
- เล็งไปที่จุดหนึ่งในโลกเพื่อให้ด้านหัวของปืนของคุณตรงไปยังสิ่งที่คุณต้องการยิง เป็นประโยชน์อย่างมากสำหรับผู้ที่ยิงในบุคคลที่สาม
- วางมือของมันบนหน้าจอของรถและติดตามมันเมื่อมันหมุน
- มากขึ้น!
IKControl จะเปลี่ยนแปลงอนิเมชั่นสำหรับทุกส่วนระห
ตัวอย่างโค้ด
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
สรุป
คุณสมบัติ
ส่วนที่สุดท้ายที่คุณสนใจในการย้ายตัวละครของคุณ เช่น ข้อมือด้านบน ต้องเป็นบรรพบุรุษของ EndEffector และต้องเป็น BasePart หรือ Class.B
เปิด/ปิดการควบคุม. เป็นปกติโดยความเคร่งเครียด
ส่วนที่คุณสนใจในการย้ายเพื่อให้ไปถึง Target ตัวอย่างเช่น มือของคุณ ต้องเป็นลูกพี่น้องของ ChainRoot และเป็น <
มีการปรับออเฟ็กต์เพิ่มเติมที่ด้านบนของ EndEffector ในพื้นที่โคลนเพื่อเปลี่ยนสถานที่ที่มันเคลื่อนที่
มีการปรับออฟเซ็ตเพิ่มเติมที่ด้านบนของ Target เพื่อเปลี่ยนสถานที่ที่ EndEffector เคลื่อนที่
ตัวอย่างออปชันที่กำหนดว่าอย่างไรสายพันธุ์จะยืด คุณสามารถใช้สิ่งนี้เพื่อระบุว่าอย่างไรข้อมือหรือ ข้อเท้าเอาชีวิตรอด
ระบุลำดับที่ควบคุมจะแก้ไข มีค่าสูงสุดมีความสำคัญสูงสุด
ระบุจํานวนเวลาเฉลี่ยที่ใช้สําหรับ EndEffector เพื่อเข้าถึง Target อย่างราบรื่น
วัตถุที่ EndEffector เข้าถึงหรือชี้ไปที่ มันสามารถเป็นอะไรก็ได้ที่มีตำแหน่งในโลกเช่น Class.BasePart``Class.Attachment 1>
ระบุวิธีที่ solver ตอบสนองการควบคุมนี้
ระบุน้ำหนักของเป้าหมายการควบคุม IK ควรอยู่ในช่วง [0, 1]
วิธีการ
คุณสมบัติ
Enabled
คุณสมบัตินี้ช่วยให้คุณเปิด/ปิดการใช้งานการควบคุม IK โดยใช้ IK โดยปกติ เมื่อ Enabled เป็นปลอม การควบคุม IK จะปิดและไม่ได้รับการแก้ไขโดยนักแก้ปัญหาเบื้องหลัง
EndEffectorOffset
ค่าเริ่มต้นของเอฟเฟคเตอร์คือออฟเซ็ตจากด้านบนของ CFrame ที่ผลิต
นอกจากนี้คุณสามารถใช้อุปกรณ์เสริมโดยการตั้งอุปกรณ์เสริมเป็น EndEffector ซึ่งย้ายมันไปที่ Target ผลการค้นหา
คุณยังสามารถใช้ EndEffectorOffset เพื่อปรับแต่งว่าแกนใดของ EndEffector ที่ชี้ไปที่ Class.IKControl.Target
Priority
เมื่อมีการควบคุมหลายอันในตัวละคร คำสั่งที่ระบบปฏิบัติการพื้นฐานแก้ไขจะส่งผลกระทบต่อตำแหน่งที่สุดท้ายที่สร้างขึ้น โดยการเ
โดยการเปลี่ยนแปลง Type คุณสามารถเปลี่ยนแปลงพฤติกรรมของการควบคุมได้ นี่คือตัวเลือกที่มีอยู่:
- Transform: มันเป็นข้อจํากัด 6-DoF ที่เต็มรูปแบบ จัดตําแหน่ง EndEffector``Datatype.CFrame ให้ตรงกับ Class.IKControl.Target|Target
- ตําแหน่ง: จัดตําแหน่ง EndEffector ให้ตรงกับตําแหน่ง Target
- การหมุน: จัดเรียงการหมุนของ EndEffector ให้ตรงกับการหมุนของ Target
- มอง: ย้ายและหมุนวงจรทั้งหมดเพื่อสร้างแกน (โดยปกติจะเป็นแกนด้านหน้า) บน EndEffector จุดที่ตรงในตำแหน่งโลกที่กำหนดโดย Target .
Weight
คุณสามารถควบคุมว่าการควบคุมที่ให้ผลกระทบต่อตัวละครโดยใช้สมบัตินี้ มีค่าเป็นตัวเลขในช่วง [0, 1] หรือไม่มีผล 0 หมายถึงไม่มีผล และ 1 หมายถึงผลเต็มขอ
น้ำหนักกำหนดตัวแปรการแปลงระหว่าง End-Effector และ IK ตัวเป้า การตั้งค่าน้ำหนักให้เป็น 0 ไม่ได้ปิดการควบคุม IK เนื่องจากปัจจัยอื่น เช่น SmoothTime สมูซผิวและ Pole