ตัวอย่าง ControllerManager จัดการการควบคุมการเคลื่อนไหวจำลองสำหรับการกำหนดค่า RootPart ของมันร่วมกับ ControllerPartSensors สามารถใช้เพื่อสร้างตัวควบคุมตัวละครที่ขับเคลื่อนด้วยฟิสิกส์
การตั้งค่าหลัก
ControllerManager ต้องใช้ BasePart เป็นรากของมัน แรงเคลื่อนที่และการรับรู้ส่วนจะอยู่บนส่วนนี้
เพิ่มตัวอย่าง ControllerManager ในรูปแบบหาก ControllerManager ไม่ปรากฏในเมนูการสอดแทรกวัตถุในตอนแรก ยกเลิกการเลือก "แสดงเฉพาะวัตถุที่แนะนำเท่านั้น" ในการตั้งค่าการสอดแทรกของเมนู
การตั้งค่าเซนเซอร์
A ControllerPartSensor ตรวจพบชิ้นส่วนที่มีรหัสเดียวกับที่ Humanoid ใช้สำหรับการตรวจจับพื้นและบันได
ใส่ ControllerPartSensor เป็นลูกของ ส่วนราก และเปลี่ยนชื่อเป็น เซนเซอร์พื้นดิน เพื่อให้ระบุวัตถุประสงค์ได้ง่ายขึ้นจากนั้นในหน้าต่าง คุณสมบัติ ตั้งค่าคุณสมบัติ SearchDistance เป็น 2 แต่ปล่อยให้ SensorMode เป็น ชั้น
ใส่อีก ControllerPartSensor เป็นลูกของ ส่วนราก และเปลี่ยนชื่อเป็น เซนเซอร์ปีนเขา จากนั้นในหน้าต่าง คุณสมบัติ ตั้งค่าคุณสมบัติ SearchDistance ของมันเป็น 1 และค่า SensorMode ของมันเป็น บันได
การตั้งค่าคอนโทรลเลอร์
ตัวควบคุมตัวอย่างเช่น GroundController และ ClimbController บอกส่วนที่จัดการวิธีการโต้ตอบกับโลกโดยทำงานร่วมกับเซนเซอร์ที่คุณกำหนดค่าในระหว่างการติดตั้งเซนเซอร์
ใส่ทั้ง GroundController และ ClimbController เป็นลูกของ ControllerManager
เลือกตัวอย่างใหม่ GroundController แล้วในหน้าต่าง คุณสมบัติ ตั้งค่าคุณสมบัติ GroundOffset เป็นค่าที่ส่วนจัดการควร "ลอยตัว" เหนือพื้นสิ่งสำคัญคือค่านี้ต้องน้อยกว่า ค่าของ สําหรับ เซนเซอร์พื้นดิน เนื่องจากเซนเซอร์นั้นจะถูกปิดใช้งานหากสูญเสียความรู้สึกของพื้นดินและหยุดการใช้พลังงานของมันในส่วน
การอ้างอิงลิงก์
เพื่อเสร็จสิ้นการติดตั้งหลักคุณจะต้องเชื่อมโยงคุณสมบัติต่างๆของตัวอย่าง ControllerManager กับวัตถุภายในหลัก Model
เลือกตัวอย่าง ControllerManager อินสแตนซ์
ในหน้าต่าง คุณสมบัติ คลิกแต่ละคุณสมบัติต่อไปนี้แล้วจากนั้นกลับไปที่หน้าต่าง สํารวจ คลิกตัวแทนที่เหมาะสมเพื่อสร้างลิงก์
- เชื่อมโยงคุณสมบัติ ActiveController กับตัวอย่าง GroundController 2. เชื่อมโยงคุณสมบัติ RootPart กับส่วนที่คุณเรียกว่า RootPart 3. เชื่อมโยงคุณสมบัติ ClimbSensor อินสแตนซ์ เซนเซอร์ปีนเขา 4. เชื่อมโยงคุณสมบัติ GroundSensor กับตัวอย่าง อินสแตนซ์
ทดสอบ
ด้วยเซนเซอร์ และคอนโทรลเลอร์ ในสถานที่ และด้วยการอ้างอิง ที่เชื่อมโยง คุณสามารถทดสอบคอนโทรลเลอร์ใน Studio ได้
เริ่มการทดสอบเล่นโดยใช้โหมด เรียกใช้ ( F8 ) เนื่องจากคุณไม่จำเป็นต้องใส่ตัวละครอวตารของคุณในสถานการณ์นี้
ส่วนราก ควรลอยอยู่เหนือพื้นที่ที่ GroundController.GroundOffset ค่าที่คุณตั้งไว้ใน เพิ่มตัวควบคุมนอกจากนี้ยังควรหมุนเพื่อให้สอดคล้องกับเวกเตอร์ ControllerManager.FacingDirection
ทดสอบด้วยการเคลื่อนไหวและทิศทางที่แตกต่างกันโดยการเปลี่ยนเวกเตอร์ MovingDirection และ FacingDirection ของ ControllerManager ในระหว่างการทำงานยังทดลองกับคุณสมบัติที่แตกต่างกันของตัวอย่าง GroundController เช่น AccelerationTime , DecelerationTime และ GroundOffset .
ผู้จัดการควบคุม ควบคุมพื้นดิน
เซนเซอร์ที่กำหนดเอง
ตัวเลือก ControllerPartSensor.SensorMode ของ Floor และ Ladder จะเรียกรหัสเซนเซอร์ที่ถูกต้อง Humanoid ทำให้คุณสามารถใช้งานได้สำหรับการย้อนกลับการสนับสนุนอย่างไรก็ตาม คุณยังสามารถปรับแต่งวิธีและเมื่อส่วนที่เดินได้และปีนได้ถูกตรวจพบ ในที่สุดก็เปลี่ยนเมื่อส่วนที่จัดการเดิน/ปีน
สลับ ControllerPartSensor.UpdateType จาก อ่าน เป็น คู่มือ
- เมื่ออ่าน ทริกเกอร์คุณสมบัติออกเพื่ออัปเดตตามที่คุณอ่านได้ทุกครั้งมันทำให้เซนเซอร์อยู่ในโหมด "อ่านเฉพาะ" ที่ทุกสิ่งที่คุณเขียนลงในคุณสมบัติเหล่านี้จะถูกเขียนทับโดยพฤติกรรมการรับรู้ภายในของมัน
- คู่มือ ปิดการตรวจจับภายในคุณสมบัติออกเป็นอิสระสำหรับคุณที่จะเขียนตามที่คุณต้องการและ SensorMode ไม่ทำอะไรเลย
สร้างสคริปต์ที่ดําเนินการตามโลจิสติกการรับรู้ของคุณเองและเขียนผลลัพธ์ลงในคุณสมบัติการออกของเซนเซอร์ของคุณโดยปกติคุณจะใช้คำถามเชิงพื้นที่เช่น WorldRoot:Raycast() หรือ WorldRoot:Blockcast() ซึ่งจะส่งคืน RaycastResultสคริปต์ของคุณสามารถรับค่าผลลัพธ์และตั้งค่าไว้บนเซนเซอร์ที่เทียบเท่าได้:
โปรดทราบว่าคุณจะต้องจัดการบ่อยแค่ไหนที่คำถามของคุณจะทำงานและอัปเดตตัวอย่างเซนเซอร์ของพวกเขา
The ControllerManager จะยังคงใช้เซนเซอร์ที่ได้รับการกำหนดให้ใช้อยู่ โดยรับข้อมูลที่คุณส่งให้กับมัน