ฉันกำลังเล่นเกมแข่งรถและเพิ่งใช้ผีสไปรต์เพื่อเล่นซ้ำการแข่งขันที่ผ่านมา ฉันใช้เครื่องมือฟิสิกส์และหลังจากอ่านมากฉันได้ข้อสรุปว่าวิธีที่ดีที่สุดในการจัดเก็บข้อมูลผีสำหรับการเล่นซ้ำจะเป็นการบันทึกตำแหน่งและการหมุนของรถตามเวลาที่ให้ไว้ตามตัวอย่างที่อธิบายไว้ที่นี่: https: // gamedev stackexchange.com/a/8380/26261
แต่จะเป็นวิธีที่ดีในการค้นหา timepoints เหล่านั้นในระหว่างการเล่นซ้ำอย่างไร ตัวอย่างจะเป็นบันทึกด้วยข้อมูลนี้:
time: +3.19932 (seconds since race start)
position: 180,40 (position at that time)
rotation: 30.4 (rotation at that time)
แต่ฉันมีปัญหาหลายประการ:
เมื่อฉันเล่นซ้ำมันไม่น่าเป็นไปได้ที่ฉันจะได้รับไทม์พอยต์ที่แน่นอนที่ 3.19932 อีกครั้ง - มีโอกาสมากขึ้นที่ฉันจะมีไทม์พอยน์ประมาณ 3.1 และต้องค้นหาระเบียนที่ใกล้เคียงที่สุด เมื่อทำการสอดแทรกการจับคู่ที่ใกล้เคียงที่สุดที่อยู่ด้านบนและด้านล่าง ฟังดูไม่มีประสิทธิภาพและเสียเวลามาก?
โครงสร้างรายการใดที่ฉันสามารถเก็บบันทึกเหล่านี้เพื่อเล่นซ้ำในภายหลัง อาร์เรย์หรือไม่ นั่นไม่ได้หมายความว่าเวลาค้นหาบันทึกที่ตรงกับเวลาที่แน่นอนจะเพิ่มการแข่งขันให้นานขึ้นหรือไม่?
ฉันควรใช้ความถี่ใดสำหรับการจับเวลา แต่ละเฟรมจะเป็น - ฉันเดาว่า - มากไปหน่อย แต่ฉันควรบันทึกนั่นคือทุกเฟรมที่ n และการสอดแทรกระหว่างซึ่งทำให้คำถามที่เก็บใน 2 ยากขึ้น
ดังนั้นความคิดนี้แม้แต่เป็นแนวทางที่ถูกต้องหรือไม่ ถ้าใช่ฉันจะเก็บและดึงข้อมูลได้อย่างมีประสิทธิภาพได้อย่างไร โปรดทราบว่าโดยทั่วไปฉันต้องการใช้โครงสร้างข้อมูลด้านบนไม่ใช่เกมที่กำหนดและบันทึกข้อมูลผู้ใช้ ฯลฯ
ขอบคุณสำหรับความช่วยเหลือใด ๆ !
แก้ไข: ฉันรู้ว่าฉันควรอธิบายถึงสภาพแวดล้อมที่ฉันใช้: Cocos2D สำหรับ iPhone มีวิธีการupdate:(ccTime)delta
คือ ตามหลักการแล้ววิธีการนี้จะเรียกว่าทุกๆ 1/60 วินาที แต่ไม่มีการรับประกัน - delta
เป็นเวลาที่ผ่านไปจริงตั้งแต่เกมพนันสุดท้ายและอาจมากหรือน้อยกว่า 1/60 มันอยู่ในวิธีนี้ที่ฉันต้องการจะเก็บเกมมิ่งในปัจจุบัน