ตัวควบคุมตัวละคร

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ตัวอย่าง ControllerManager จัดการการควบคุมการเคลื่อนไหวจำลองสำหรับการกำหนดค่า RootPart ของมันร่วมกับ ControllerPartSensors สามารถใช้เพื่อสร้างตัวควบคุมตัวละครที่ขับเคลื่อนด้วยฟิสิกส์

การตั้งค่าหลัก

ControllerManager ต้องใช้ BasePart เป็นรากของมัน แรงเคลื่อนที่และการรับรู้ส่วนจะอยู่บนส่วนนี้

  1. เลือก Part หรือ MeshPart และตั้งชื่อว่า ส่วนราก 2. กลุ่มส่วนเป็นตัวอย่าง Model สำหรับองค์กรพร้อมกับส่วนอื่น ๆ

  2. เพิ่มตัวอย่าง ControllerManager ในรูปแบบหาก ControllerManager ไม่ปรากฏในเมนูการสอดแทรกวัตถุในตอนแรก ยกเลิกการเลือก "แสดงเฉพาะวัตถุที่แนะนำเท่านั้น" ในการตั้งค่าการสอดแทรกของเมนู

    ControllerManager and RootPart inside a model.

การตั้งค่าเซนเซอร์

A ControllerPartSensor ตรวจพบชิ้นส่วนที่มีรหัสเดียวกับที่ Humanoid ใช้สำหรับการตรวจจับพื้นและบันได

  1. ใส่ ControllerPartSensor เป็นลูกของ ส่วนราก และเปลี่ยนชื่อเป็น เซนเซอร์พื้นดิน เพื่อให้ระบุวัตถุประสงค์ได้ง่ายขึ้นจากนั้นในหน้าต่าง คุณสมบัติ ตั้งค่าคุณสมบัติ SearchDistance เป็น 2 แต่ปล่อยให้ SensorMode เป็น ชั้น

    GroundSensor as child of RootPart
  2. ใส่อีก ControllerPartSensor เป็นลูกของ ส่วนราก และเปลี่ยนชื่อเป็น เซนเซอร์ปีนเขา จากนั้นในหน้าต่าง คุณสมบัติ ตั้งค่าคุณสมบัติ SearchDistance ของมันเป็น 1 และค่า SensorMode ของมันเป็น บันได

    ClimbSensor as child of RootPart

การตั้งค่าคอนโทรลเลอร์

ตัวควบคุมตัวอย่างเช่น GroundController และ ClimbController บอกส่วนที่จัดการวิธีการโต้ตอบกับโลกโดยทำงานร่วมกับเซนเซอร์ที่คุณกำหนดค่าในระหว่างการติดตั้งเซนเซอร์

  1. ใส่ทั้ง GroundController และ ClimbController เป็นลูกของ ControllerManager

    GroundController and ClimbController as children of ControllerManager.
  2. เลือกตัวอย่างใหม่ GroundController แล้วในหน้าต่าง คุณสมบัติ ตั้งค่าคุณสมบัติ GroundOffset เป็นค่าที่ส่วนจัดการควร "ลอยตัว" เหนือพื้นสิ่งสำคัญคือค่านี้ต้องน้อยกว่า ค่าของ สําหรับ เซนเซอร์พื้นดิน เนื่องจากเซนเซอร์นั้นจะถูกปิดใช้งานหากสูญเสียความรู้สึกของพื้นดินและหยุดการใช้พลังงานของมันในส่วน

การอ้างอิงลิงก์

เพื่อเสร็จสิ้นการติดตั้งหลักคุณจะต้องเชื่อมโยงคุณสมบัติต่างๆของตัวอย่าง ControllerManager กับวัตถุภายในหลัก Model

  1. เลือกตัวอย่าง ControllerManager อินสแตนซ์

    ControllerManager selected in Explorer window.
  2. ในหน้าต่าง คุณสมบัติ คลิกแต่ละคุณสมบัติต่อไปนี้แล้วจากนั้นกลับไปที่หน้าต่าง สํารวจ คลิกตัวแทนที่เหมาะสมเพื่อสร้างลิงก์

    1. เชื่อมโยงคุณสมบัติ ActiveController กับตัวอย่าง GroundController 2. เชื่อมโยงคุณสมบัติ RootPart กับส่วนที่คุณเรียกว่า RootPart 3. เชื่อมโยงคุณสมบัติ ClimbSensor อินสแตนซ์ เซนเซอร์ปีนเขา 4. เชื่อมโยงคุณสมบัติ GroundSensor กับตัวอย่าง อินสแตนซ์
    ControllerManager properties linked to instances within overall model

ทดสอบ

ด้วยเซนเซอร์ และคอนโทรลเลอร์ ในสถานที่ และด้วยการอ้างอิง ที่เชื่อมโยง คุณสามารถทดสอบคอนโทรลเลอร์ใน Studio ได้

  1. เริ่มการทดสอบเล่นโดยใช้โหมด เรียกใช้ ( F8 ) เนื่องจากคุณไม่จำเป็นต้องใส่ตัวละครอวตารของคุณในสถานการณ์นี้

    Rapid playtest options in Studio.
  2. ส่วนราก ควรลอยอยู่เหนือพื้นที่ที่ GroundController.GroundOffset ค่าที่คุณตั้งไว้ใน เพิ่มตัวควบคุมนอกจากนี้ยังควรหมุนเพื่อให้สอดคล้องกับเวกเตอร์ ControllerManager.FacingDirection

    Character levitating above ground at GroundOffset, facing in direction of FacingDirection vector.
  3. ทดสอบด้วยการเคลื่อนไหวและทิศทางที่แตกต่างกันโดยการเปลี่ยนเวกเตอร์ MovingDirection และ FacingDirection ของ ControllerManager ในระหว่างการทำงานยังทดลองกับคุณสมบัติที่แตกต่างกันของตัวอย่าง GroundController เช่น AccelerationTime , DecelerationTime และ GroundOffset .

    ControllerManager properties for moving and facing direction are highlighted.
    ผู้จัดการควบคุม
    GroundController properties for acceleration, deceleration, and ground offset are highlighted.
    ควบคุมพื้นดิน

เซนเซอร์ที่กำหนดเอง

ตัวเลือก ControllerPartSensor.SensorMode ของ Floor และ Ladder จะเรียกรหัสเซนเซอร์ที่ถูกต้อง Humanoid ทำให้คุณสามารถใช้งานได้สำหรับการย้อนกลับการสนับสนุนอย่างไรก็ตาม คุณยังสามารถปรับแต่งวิธีและเมื่อส่วนที่เดินได้และปีนได้ถูกตรวจพบ ในที่สุดก็เปลี่ยนเมื่อส่วนที่จัดการเดิน/ปีน

  1. สลับ ControllerPartSensor.UpdateType จาก อ่าน เป็น คู่มือ

    • เมื่ออ่าน ทริกเกอร์คุณสมบัติออกเพื่ออัปเดตตามที่คุณอ่านได้ทุกครั้งมันทำให้เซนเซอร์อยู่ในโหมด "อ่านเฉพาะ" ที่ทุกสิ่งที่คุณเขียนลงในคุณสมบัติเหล่านี้จะถูกเขียนทับโดยพฤติกรรมการรับรู้ภายในของมัน
    • คู่มือ ปิดการตรวจจับภายในคุณสมบัติออกเป็นอิสระสำหรับคุณที่จะเขียนตามที่คุณต้องการและ SensorMode ไม่ทำอะไรเลย
  2. สร้างสคริปต์ที่ดําเนินการตามโลจิสติกการรับรู้ของคุณเองและเขียนผลลัพธ์ลงในคุณสมบัติการออกของเซนเซอร์ของคุณโดยปกติคุณจะใช้คำถามเชิงพื้นที่เช่น WorldRoot:Raycast() หรือ WorldRoot:Blockcast() ซึ่งจะส่งคืน RaycastResultสคริปต์ของคุณสามารถรับค่าผลลัพธ์และตั้งค่าไว้บนเซนเซอร์ที่เทียบเท่าได้:

    โปรดทราบว่าคุณจะต้องจัดการบ่อยแค่ไหนที่คำถามของคุณจะทำงานและอัปเดตตัวอย่างเซนเซอร์ของพวกเขา

  3. The ControllerManager จะยังคงใช้เซนเซอร์ที่ได้รับการกำหนดให้ใช้อยู่ โดยรับข้อมูลที่คุณส่งให้กับมัน