แก้ไข:
โปรดดูคำตอบของ @ Bluescrn สำหรับคำถามนี้ เขาอธิบายถึงจุดอ่อนในการเล่นซ้ำการควบคุมมากกว่าการเคลื่อนไหวของเวกเตอร์หรือตำแหน่ง
-
คุณมาถูกทางแล้ว นี่คือวิธีที่ฉันใช้:
ตัวควบคุม
สร้างคลาส Controller ที่รับอินพุตคีย์บอร์ดและส่งต่อไปยังตัวละครของคุณ อย่างไรก็ตามยังมีเรคคอร์ดของ Controller อย่างแน่นอนเมื่อกดปุ่มที่สำคัญ (เช่นลูกศรกระโดด ฯลฯ ) และเมื่อถูกปล่อย มันจะเก็บข้อมูลประเภทนี้:
actions[0].milliseconds = 400 actions[0].action = right pressed
actions[1].milliseconds = 1000 actions[1].action = jump pressed
actions[2].milliseconds = 1300 actions[2].action = jump released
actions[3].milliseconds = 2500 actions[3].action = jump pressed
actions[4].milliseconds = 3000 actions[4].action = jump released
actions[5].milliseconds = 5330 actions[5].action = right released
คอนโทรลเลอร์มีสองโหมด:
- บันทึก: รับคีย์บอร์ด บันทึกอินพุตในรายการ ส่งอินพุตอักขระตามสถานะคีย์บอร์ด
- เล่นซ้ำ: ละเว้นคีย์บอร์ดอินพุต เลื่อนระดับผ่านรายการตามมิลลิวินาทีนับตั้งแต่ระดับเริ่มขึ้น มอบการป้อนอักขระตามสถานะแป้นพิมพ์ที่บันทึกในช่วงเวลาปัจจุบัน
ตัวละคร
เมื่อวัตถุตัวละครของคุณถูกสร้างมันจะสร้างตัวควบคุมใหม่สำหรับตัวเอง ตัวละครสามารถอยู่ในหนึ่งในสองโหมดในเวลาใดก็ได้:
- ใช้งานอยู่: มีตัวละครที่ใช้งานเพียงตัวเดียวเท่านั้นและเป็นตัวละครที่คุณควบคุม เมื่อตัวละครอยู่ในโหมดแอคทีฟคอนโทรลเลอร์จะอยู่ในโหมดบันทึก โดยค่าเริ่มต้นเมื่อสร้างตัวละครมันอยู่ในโหมดใช้งาน
- Ghost: นี่คือสิ่งที่ทำซ้ำการกระทำในอดีตของคุณ เมื่อตัวละครเข้าสู่โหมดผีมันจะเปลี่ยนลักษณะที่ปรากฏและตั้งค่าตัวควบคุมเป็นโหมดเล่นซ้ำ
ระดับ
ระดับเริ่มต้นใหม่
เมื่อคุณเริ่มระดับให้สร้างตัวละครตัวเดียว ตอนนี้ระดับเริ่มต้นและผู้เล่นทำสิ่งของเขา
เมื่อเวลารีเซ็ต
เมื่อระดับรีเซ็ตให้ทำสามสิ่ง:
- บอกลักษณะการใช้งานปัจจุบันเพื่อเข้าสู่โหมดโกสต์
- สร้างตัวละครใหม่
- เรียกตัวละครทั้งหมดเพื่อรีเซ็ตตัวเอง สิ่งนี้จะทำให้พวกเขากลับไปที่ตำแหน่งเริ่มต้นโดยไม่มีการเคลื่อนไหว ฯลฯ พวกเขาจะบอกให้ผู้ควบคุมของตนรีเซ็ตเป็นมิลลิวินาทีที่ 0 โดยไม่ต้องกดปุ่ม
จากนั้นระดับเริ่มต้นและผู้เล่นทำสิ่งที่เขา